Asp.Net MVC - 具有相同名称控制器的路由问题?

时间:2013-06-14 22:30:50

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

我面临的问题是我有2个同名的控制器。一个在主控制器文件夹中,另一个在管理区域的控制器文件夹中。

直接调用操作结果可以正常工作:

MySite/Admin/Account/GetAccount?userId=1

通过路线呼叫不起作用

MySite/Admin/User/1/Account

任何想法我做错了什么?

的Application_Start

AreaRegistration.RegisterAllAreas()

RouteConfig

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[] { "MyCompany.Controllers" }
    );
}

AdminAreaRegistration

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );

    context.MapRoute(
        "GetUserAccount",
        "Admin/User/{userId}/Account",
        new { controller = "Account", action = "GetAccount" },
        new[] { "MyCompany.Areas.Admin.Controllers" }
    );
}

我在区域/管理员/帐户控制中的操作结果

public ActionResult GetAccount(string userId)
{
    // return Account Type
}

1 个答案:

答案 0 :(得分:2)

我认为您应该更改帐户的位置并再次检查

 context.MapRoute(
        "GetUserAccount",
        "Admin/User/{userId}/Account",
        new { controller = "Account", action = "GetAccount" },
        new[] { "MyCompany.Areas.Admin.Controllers" }
    );
context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );