我有一个ASP.NET MVC4应用程序,在Global.asax.cs中定义了以下路由。应用程序的起始页面是从Home控制器的操作方法Index()返回的Index.cshtml视图。然后,我添加了一个将Default.aspx作为起始页面的旧版ASP.NET WebForms应用程序。如何将此Default.aspx页面作为此集成MVC + WebForms应用程序的起始页面:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}.mvc/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
}
答案 0 :(得分:18)
在Global.asax中尝试以下内容:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Web Forms default
routes.MapPageRoute(
"WebFormDefault",
"",
"~/default.aspx"
);
// MVC default
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // parameter default
);
}
此外,我认为您不需要.mvc
路线的Default
部分。
答案 1 :(得分:1)
从默认参数中删除'controller =“ Home”'对我来说非常有用。我在这里找到了解决方案:https://stackoverflow.com/a/21213711/9793076。
将默认参数更改为:
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
收件人:
new { action = "Index", id = UrlParameter.Optional }
如@nam所说,当前解决方案破坏了MVC链接的路由。