У меня есть проект ASP MVC 4, который содержит области и имеет следующую структуру:
- Область
- MyArea
- Контроллеры
- MyAreaRegistration.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 также портит все остальные маршруты, не входящие в область.
Как я могу достичь маршрута по умолчанию в области, не путая все остальное?
Любая помощь приветствуется.