0

我正在将旧的 .aspx 页面转换为新的 MVC 页面的项目。我目前正在使用路由功能来映射现有的遗留页面以在幕后使用较新的 MVC 页面。这很好用,因为它保留了现有的 URL,但是,每当控制器需要重定向用户或使用 MVC Url.Action 链接时,它将用户发送到的 URL 是 MVC url,而不是路由的旧页面 url . 我意识到这是开箱即用的假设方式,但我想知道 MVC 是否具有某种“反向路由”功能。通过反向路由,我正在寻找允许 Url.Action("action") 返回与指定操作而不是默认 /controller/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,但我只是想检查现有功能,所以我不会重新发明轮子。

4

1 回答 1

1

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

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

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

于 2012-06-20T18:16:10.617 回答