ASP.NET MVC4使用webforms Default.aspx作为起始页面

时间:2014-02-17 01:01:09

标签: asp.net-mvc asp.net-mvc-4 webforms asp.net-mvc-routing

我有一个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 = "" }
            );


        }

2 个答案:

答案 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链接的路由。