【发布时间】:2010-12-01 01:21:33
【问题描述】:
我在这里有一个混合了 webform 和 mvc 的应用程序。我指定路由如下
routes.Add("AspxRoute", new Route("Upload/New", new WebFormRouteHandler<Page>("~/Uploads.aspx")));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
所以“上传/新建”的虚拟路径实际上映射到一个 aspx 网络表单页面。
但我的问题是 Html.ActionLink("Test", "Controller", "Action") 现在呈现
/Upload/New?Controller=Controller&Action=Action
查看了 MVC 源代码,我知道这是因为 ActionLink 调用了 RouteCollection.GetVirtualPath(requestContext, routeName, mergedRouteValues),其中 routeName 为空。不知何故,这默认使用 AspxRoute 路由来构造 url。我试图在“AspxRoute”之前添加另一条路由,但它似乎总是默认为非 mvc 路由处理程序。
当 routeName 为空时,RouteCollection.GetVirtualPath 的行为如何?为什么我的情况会这样?
如何构建正确的网址?我需要编写一个新的 Htmlhelper 扩展吗?
干杯
【问题讨论】:
标签: asp.net-mvc webforms asp.net-mvc-routing