我正在开发一个将旧的.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,但我只是想检查现有的功能,所以我不重新发明轮子。
答案 0 :(得分:1)
尝试使用RouteUrl扩展方法,该方法按路由名称而不是路由参数匹配路由,如下所示:
Url.RouteUrl("aboutus") // route name