MVC3反向路由

时间:2012-06-20 17:49:55

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

我正在开发一个将旧的.aspx页面转换为更新的MVC页面的项目。我目前正在使用路由功能来映射现有的遗留页面,以便在幕后使用更新的MVC页面。这很有效,因为它保留了现有的URL,但是,每当控制器需要重定向用户或使用MVC Url.Action链接时,它发送给用户的URL是MVC URL而不是路由的遗留页面URL 。我意识到这就是它假设开箱即用的方式,但我想知道MVC是否具有某种类型的“反向路由”功能。通过反向路由,我正在寻找允许Url.Action(“action”)使用指定的操作而不是默认/控制器/操作链接返回路由的.aspx关联url的东西。

例如,

这是一个示例路线

context.MapRoute("AboutUs", "pages/aboutus.aspx", new { controller = "default", action = "aboutus" });

这使domain.com/pages/aboutus.aspx能够完美地从幕后的DefaultController运行新的MVC操作“aboutus”。

但是,如果在另一个MVC页面上我有一个由

创建的链接
Url.Action("aboutus")

它指向domain.com/mvc/aboutus。我希望将它们指向domain.com/pages/aboutus.aspx,以保持整个网站的一致性。

感谢您提供的任何见解。我可能最终必须覆盖Url.Action方法来查找路径并返回映射的URL,但我只是想检查现有的功能,所以我不重新发明轮子。

1 个答案:

答案 0 :(得分:1)

尝试使用RouteUrl扩展方法,该方法按路由名称而不是路由参数匹配路由,如下所示:

Url.RouteUrl("aboutus") // route name

MSDN:http://msdn.microsoft.com/en-us/library/dd460347