Asp.net-Mvc-3
MVC 2 / MVC 3 / MVC 4 中的嵌套區域
從 MVC 2 開始,我們可以輕鬆創建區域。現在我的問題與嵌套區域(區域內的區域)有關。
選擇我的“
father”區域文件夾,滑鼠右鍵點擊 >Add> NO 選項new Area。是否有可能以其他方式做到這一點?或者這個選項會在不久的將來提供嗎?
我意識到這是一個老問題,但如果其他人試圖弄清楚,我會回答它。對此的解決方案是在比區域更低的級別創建使用不同路由值的區域,例如,您的 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}",在您所在的地區註冊。