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 }
);