2

我们的路由表设置如下:

// ... 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并允许两者都工作?

4

1 回答 1

0

你可以尝试Html.RouteLink在那里你给出你的路由应该使用的路由名称

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

它应该工作。

于 2012-07-11T21:03:29.410 回答