默认为区域控制器

时间:2013-01-19 13:05:58

标签: c# asp.net asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas

对于ASP.NET MVC应用程序,我有2个名为Home的控制器。其中一个控制器位于Areas部分,一个不是。如果有人转到基本路径/,我会尝试默认为Areas部分中的控制器。我觉得这是可能的。我有以下设置,我认为应该让这种情况发生 -

enter image description here

当我转到/时,我仍然被MVCArea01/Controllers/而不是MVCArea01/Areas/Admin/Controllers/带到控制器。

(如果图片中的代码太小而无法看到,这里是方法的代码,RegisterRoutes)

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
        new[] {"MVCAreas01.Areas.Admin.Controllers"}  // I believe this code should cause "/" to go to the Areas section by default
    );

}

什么是正确的解决方案?

3 个答案:

答案 0 :(得分:1)

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { 
            controller = "Home", 
            action = "Index", 
            id = UrlParameter.Optional, 
            area = "Admin" 
       }
}

答案 1 :(得分:0)

@ABogus

我修改了AdminAreaRegistration.cs文件。请参考下图

Modified the MapRoute

我还修改了Route.config,如下所示。

Route.config is also modified.

我得到了像这样的输出

Default route to Areas->Admin->Controller->Home

您可以从https://www.dropbox.com/s/o8in2389e8aebak/SOMVC.zip

下载示例项目

答案 2 :(得分:0)

您应该为起始页面创建其他路线,这将直接处理到正确的控制器:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Home_Default",
        "",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new[] { "MVCAreas01.Areas.Admin.Controllers" });

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        namespaces: new[] { "MVCAreas01.Controllers" }
    );
}
相关问题