Me doy cuenta de que esta es una vieja pregunta, pero la responderé en caso de que alguien más esté tratando de resolverla.Una solución a esto es crear áreas que utilizan un valor de enrutamiento diferente en un nivel inferior a la zona, así que por ejemplo su RouteConfig sería algo como esto:
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" });
}
}
Y una de sus registros sub-área podría ser similar esto:
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" }
);
}
}
Después de leer eso, ¿el "área" todavía se parece a una palabra? Porque no me importa.
P.S. Usted puede hacer esto de forma recursiva tantas veces como desee (en teoría) de tal manera que, por ejemplo, usted podría hacer
url: "{area}/{subArea}/{subSubArea}/{subSubSubArea}/{evenMoreSubArea}/{controller}/{action}/{id}",
en sus RouteConfig.cs y
"Area/SubArea/SubSubArea/SubSubSubArea/EvenMoreSubArea/{controller}/{action}/{id}",
en su registro zona.
Lo leí dos veces y pensé en la estructura Org para la intranet de la compañía ... – Ahmad