Маршрут по умолчанию в проекте MVC с участками - PullRequest
0 голосов
/ 03 июня 2019

У меня есть проект ASP MVC 4, который содержит области и имеет следующую структуру:

  • Область
    • MyArea
      • Контроллеры
        • MyAreaController.cs
      • MyAreaRegistration.cs
  • Контроллеры
    • HomeController.cs
  • Global.asax

В Global.asax я регистрирую сначала маршруты области, а затем глобальные маршруты:

   AreaRegistration.RegisterAllAreas();
   RegisterRoutes(RouteTable.Routes);

У меня есть маршрут по умолчанию в RegisterRoutes:

routes.MapRoute(
       "Default", // Route name
       "{controller}/{action}/{id}", // URL with parameters
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
       new string[] { "Controllers" }
       );

Теперь я хочу, чтобы маршрут проекта по умолчанию указывал на действие (страницу входа с URL-адресом возврата в качестве параметра) в MyArea, не затрагивая остальные маршруты. Я попытался установить маршрут по умолчанию в MyAreaRegistration:

 context.MapRoute(
       "MyArea_Default",
       "{controller}/{action}/{returnUrl}",
       new { controller = "MyArea", action = "LogOn", returnUrl = "/Home/Index" },
       new[] { "Areas.MyArea.Controllers" }
       );

Это работает, проекты запускаются в нужном виде. Однако проблема заключается в том, что многие маршруты, используемые в проекте (например, / Home / Help), будут соответствовать маршруту MyArea_Default, поскольку он зарегистрирован до маршрута по умолчанию. Попытка установить область DataToken в RegisterRoutes также портит все остальные маршруты, не входящие в область.

Как я могу достичь маршрута по умолчанию в области, не путая все остальное?

Любая помощь приветствуется.

...