Я понимаю, что это старый вопрос, но я отвечу на него, если кто-то еще попытается выяснить это.Решением этой проблемы является создание областей, которые используют другое значение маршрутизации на более низком уровне, чем область, поэтому, например, ваш RouteConfig будет выглядеть примерно так:
public class RouteConfig
{
/// <summary>
/// A function that registers the default navigation route.
/// </summary>
/// <param name="routes">The RouteCollection to act on.</param>
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
var route = routes.MapRoute(
name: "Default",
url: "{area}/{subArea}/{controller}/{action}/{id}",
defaults: new { area = "DefaultArea", controller = "Home", action = "Splash", id = UrlParameter.Optional, section = "Customer" },
namespaces: new string[] { "Application.Controllers" });
}
}
И одна из ваших регистраций подобласти можетвыглядит так:
public class ApplicationSubAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "ApplicationSubArea";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"SubArea_default",
"Area/SubArea/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new string[] { "Application.Areas.AreaName.SubAreaName.Controllers" }
);
}
}
После прочтения слова "область" все еще выглядит как слово?Потому что это не для меня.
PS Вы можете делать это рекурсивно столько раз, сколько хотите (теоретически), так что, например, вы можете сделать
url: "{area}/{subArea}/{subSubArea}/{subSubSubArea}/{evenMoreSubArea}/{controller}/{action}/{id}",
в вашем RouteConfig.csи
"Area/SubArea/SubSubArea/SubSubSubArea/EvenMoreSubArea/{controller}/{action}/{id}",
при регистрации в вашем регионе.