Asp.Net MVC - проблема маршрутизации с одноименными контроллерами?

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть 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" }
    );
}

Результат моих действий в областях /Admin/AccountController

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

1 ответ

Решение

Я думаю, что вы должны изменить позиции счета и проверить еще раз

 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 }
    );
Другие вопросы по тегам