如何配置ASP.NET MVC 3路由,以便它不会在URL中显示控制器?
这是我的路线
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"HomeActions",
"{action}",
new { action= "AboutUs" }
);
我需要网址:
mysite.com/AboutUs
但我有
mysite.com/Home/AboutUs
答案 0 :(得分:20)
我会非常具体地说明您要路由的网址。并将其置于默认路线之上。
routes.MapRoute(
"HomeActions",
"AboutUs",
new { controller = "Home", action= "AboutUs" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
与您建议的路线不太具体,可能会产生不良后果。特别是如果列在默认路线下方。
routes.MapRoute(
"HomeActions",
"{action}",
new { controller = "Home", action= "AboutUs" }
);
例如,如果在默认值之后添加了上述路由,那么网址http://www.example.com/AboutUs可能会匹配路由{controller =“AboutUs”,action =“Index”,id = UrlParamter.Optional}。如果您将路由添加到默认路由之上,那么查找您可能希望成为Users控制器上的Index操作的URL http://www.example.com/Users现在将在Home控制器上查找Users操作。
所以,我建议具体说明这样的路线。
答案 1 :(得分:6)
您需要添加不带{controller}
部分的路由,并在defaults参数中指定控制器名称。