2

对于 ASP.NET MVC 应用程序,我有 2 个控制器,名称为Home. 其中一个控制器在一个Areas部分中,一个不在。如果有人转到基本路径/,我会尝试默认使用该Areas部分中的控制器。我的印象是这是可能的。我有以下设置,我相信它应该可以实现 -

在此处输入图像描述

当我去的时候/,我还是被带到了Controller inMVCArea01/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
    );

}

什么是正确的解决方案?

4

3 回答 3

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" 
       }
}
于 2013-01-19T13:08:28.357 回答
0

@ABogus

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

修改了 MapRoute

我还修改了 Route.config 如下。

Route.config 也被修改。

我得到了这样的输出

默认路由到 Areas->Admin->Controller->Home

您可以从https://www.dropbox.com/s/o8in2389e8aebak/SOMVC.zip下载示例项目

于 2013-01-20T17:50:25.080 回答
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" }
    );
}
于 2013-01-20T18:51:53.950 回答