我认为这很容易,但我完全不知所措。
我希望一个控制器的视图位于应用程序的根级别,而不是在该控制器的子目录中,但我无法弄明白。
我想要这两个网址:
/ Info - 这应该在控制器“Home”上操作“Info”
/ Admin / - 这应该是控制器“Admin”
上的操作“索引”(默认)到目前为止,无论我尝试过什么,第一条路线最终都会捕捉到它们。我似乎无法将两者分开。
那个Info页面甚至不需要控制器,它是静态的,但我确实想要使用母版页。可能有一种更简单的方法来解决这个问题,但我也没想出来。
我能想到的就是创建一个Info控制器,并将Views / Home / Info移动到Views / Info / Index,但它有一定的气味。
我可以使用以下方式在rails中执行此操作:
map.connect ':controller/:action/:id'
map.connect ':action', :controller => 'home'
答案 0 :(得分:6)
你只需要正确的路线。在你的情况下:
routes.MapRoute(
"Info",
"Info",
new { controller = "Home", action = "Info" }
routes.MapRoute(
"Admin",
"Admin",
new { controller = "Admin", action = "Index" }
但我建议您采用this方法。
如果您需要更改视图/偏见视图的默认物理位置,请执行以下操作 查看how to创建自定义视图引擎。
答案 1 :(得分: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