MapRoute不影响ActionLinks

时间:2012-08-11 02:29:03

标签: asp.net-mvc asp.net-mvc-routing

通常我想要生成URL时使用的默认路由(“向后”映射),即使我已添加备用路由或旧路由以达到某个操作(“转发”):

routes.MapRoute("Legacy", "legacy/home/index",     // want forward-only mapping!
    new { controller = "Home", action = "Index" };
routes.MapRoute("Default", "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }

在这种情况下,我仍然想要在调用时使用默认路由:

@ActionLink("Index", "Home")                       // generates legacy URLs ;(

在主题:Routing legacy requests with and without querystring(问题#1)中,解决方案是为每个旧路由添加两个MapRoute语句,或在每个ActionLink调用中指定路由名称。

有没有办法为网址定义的路线 - >动作映射,而不是反向?

1 个答案:

答案 0 :(得分:0)

我找不到让路由语句只应用一种方法的方法,所以我安装了IIS URL Rewrite模块。这可以透明地重写URL,或者在遗留URL的情况下301重定向。

它比编辑global.asax更易于维护。