我们的路由表设置如下:
// ... 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 });
这允许 URL 喜欢/Foo.aspx
并且也/Foo
可以正确路由到FooController.Index
. 我相信这是为了向后兼容而添加的。但是,当使用UrlHelper
生成 URL时UrlHelper.Action
,会使用更丑陋的 URL 版本。例如,Url.Action("Bar", "Foo")
产量Foo.aspx/Bar
。
我希望生成的 URL 使用更干净的Default
路由。如果我交换两个MapRoute
调用,则此方法有效,但随后/Foo.aspx
不再路由到,FooController
因为它.aspx
被视为包含在{controller}
占位符中。
URL 参数中是否有任何方法MapRoute
可以让我们将路由放在Default
路由之前aspx
并允许两者都工作?