路由表排序问题

时间:2012-07-11 20:54:50

标签: asp.net asp.net-routing

我们的路由表设置如下:

// ... 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路线并允许两者都有效?

1 个答案:

答案 0 :(得分:0)

您可以尝试Html.RouteLink,然后提供路由应使用的路线名称

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.routelink.aspx

它应该有用。