6

我认为这将相当容易,但我完全感到困惑。

我希望一个控制器的视图位于应用程序的根级别,而不是位于该控制器的子目录中,但我无法弄清楚。

我想要这两个网址:

/Info - 这应该在控制器“Home”上操作“Info”

/Admin/ - 这应该是控制器“Admin”上的操作“Index”(默认)

到目前为止,无论我尝试了什么,第一条路线最终都会抓住两者。我似乎无法将两者分开。

该信息页面甚至不需要控制器,它是静态的,但我确实想使用母版页。可能有一种更简单的方法可以解决这个问题,但我也没有想到。

我能想到的就是创建一个 Info 控制器,并将 Views/Home/Info 移动到 Views/Info/Index,但这有一定的味道。

我能够在rails中使用:

  map.connect ':controller/:action/:id'
  map.connect ':action', :controller => 'home'
4

2 回答 2

6

你只需要正确的路线。在你的情况下:

routes.MapRoute(
                "Info",
                "Info",
                new { controller = "Home", action = "Info" }

routes.MapRoute(
                "Admin",
                "Admin",
                new { controller = "Admin", action = "Index" }

但我推荐你这种方法。

如果您需要更改视图/部分视图的默认物理位置,
请查看如何创建自定义视图引擎。

于 2009-06-29T07:16:57.587 回答
0

您可以使用路由属性。

在您的路由配置文件中,您应该有。

        routes.MapMvcAttributeRoutes();
        AreaRegistration.RegisterAllAreas();
        //code below should already be in your route config by default
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

然后在每个动作之上你可以有一个路由属性。

 [Route("info")]

您甚至可以通过添加参数和/或子文件夹来更高级地使用这些属性

 [Route("blog/posts/{postId}")]

您可以将上述属性放在任何操作上,它看起来好像它来自博客控制器。但是,您甚至不需要博客控制器。{} 也表示参数,因此只需确保您的操作采用与花括号中的参数相同的参数。在这种情况下,参数将是

string postId
于 2016-01-25T19:10:54.593 回答