【问题标题】:ASP.NET MVC4 with webforms Default.aspx as the start pageASP.NET MVC4 与 webforms Default.aspx 作为起始页
【发布时间】:2014-03-16 03:46:08
【问题描述】:

我有一个 ASP.NET MVC4 应用程序,它在 Global.asax.cs 中定义了以下路由。应用的起始页是 Index.cshtml 视图,它从 Home 控制器的操作方法 Index() 返回。然后,我添加了一个以 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 = "" }
            );


        }

【问题讨论】:

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


    【解决方案1】:

    在您的 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
        );
    }
    

    另外,我认为您不需要 Default 路由的 .mvc 部分。

    【讨论】:

    • 我想我们已经很接近了。起始页现在是Default.aspx。但是操作链接不起作用。例如:@Html.ActionLink("Show me...", "Index", "TestController"); 发送回主页,并且浏览器中的 URL 显示:http://localhost/myProject/?action=Index&controller=Test
    • @nam 尝试改变Default 路由,如上所述。通常,当@Html 助手返回带有查询字符串中路径的链接时,这意味着它找不到合适的路线来映射。
    • 我颠倒了上述解决方案的“Web 表单默认”和“MVC 默认”块的顺序,它起作用了。感谢您的帮助。
    【解决方案2】:

    从默认参数中删除 'controller = "Home"' 对我来说非常有用。我在这里找到了解决方案:https://stackoverflow.com/a/21213711/9793076

    更改默认参数:

    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    

    到:

    new { action = "Index", id = UrlParameter.Optional }
    

    正如@nam 所说,当前的解决方案打破了 MVC 链接的路由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2012-07-07
      相关资源
      最近更新 更多