我们的路由表设置如下:
// ... specific routes
routes.MapRoute(
"aspx",
"{controller}.aspx/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
这允许/Foo.aspx
和/Foo
等网址正确路由到FooController.Index
。我相信这是为了向后兼容而添加的。但是,使用UrlHelper
生成使用UrlHelper.Action
的网址时,会使用较新版本的网址。例如,Url.Action("Bar", "Foo")
会产生Foo.aspx/Bar
。
我希望生成的网址使用更清晰的Default
路由。如果我交换了两个MapRoute
来电,但/Foo.aspx
不再路由到FooController
,这是有效的,因为.aspx
被视为包含在{controller}
占位符中
MapRoute
的网址参数中是否有任何方法可以让我们在Default
路线前放置aspx
路线并允许两者都有效?
答案 0 :(得分:0)
您可以尝试Html.RouteLink
,然后提供路由应使用的路线名称
http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.routelink.aspx
它应该有用。