Asp.net-Mvc-3

MVC 2 / MVC 3 / MVC 4 中的嵌套區域

  • May 31, 2021

從 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}",

在您所在的地區註冊。

引用自:https://stackoverflow.com/questions/3211663