目前,家庭控制器下的所有内容都显示在URL中
example.com/Home/{Action}
有没有办法,我们可以保持所有其他路由的方式,但只有特殊情况的家庭控制器,所以家中的一切都在域下。
喜欢
example.com/about example.com/contact example.com/error
而不是为他们每个创建新的控制器类。
编辑:
另一个URL就像
example.com/user/details/123 example.com/user/edit/123
userController中的哪些应该像现在一样工作
解决方法
我觉得最好的办法是:
routes.MapRoute("home","home",new { controller = "Home",action = "Index" }); routes.MapRoute("about","about",action = "About" }); routes.MapRoute("contact","contact",action = "Contact" }); routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults );
当您要创建链接时,请使用:
@Html.RouteLink("Home",new{/* route values */},new {/* html attribues */})
要么:
@Html.RouteLink("Home","home")
代替:
@Html.ActionLink("Home","Index","Home",new {/* html attribues */})
这对我有用,也应该为你工作。
UPDATE:
您可以在url中的action部分之前创建一个像@(或 – 或其他任何东西)的符号,以使url是唯一的,例如:
routes.MapRoute( "test",// route name "@{action}",// url and parameters new {controller = "MyHome",action = "Home"} // parameter defaults ); routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",id = UrlParameter.Optional } // Parameter defaults );
以这种方式,您的网址与默认地图路线不同,您可以创建如下URL:
site.com/@Home site.com/@About site.com/@Contact
但是,在我的想法中,第一个是更好的,我总是使用它。