自从MVC 2以来,我们可以轻松创建区域。现在我的问题与嵌套区域(区域内的区域)有关。
选择我的“父”区域文件夹,右键单击 > 添加 > 没有选项用于新区域。是否有其他方法可以实现?或者这个选项将在不久的将来提供?
选择我的“父”区域文件夹,右键单击 > 添加 > 没有选项用于新区域。是否有其他方法可以实现?或者这个选项将在不久的将来提供?
我知道这是一个老问题,但我会回答它,以防其他人也在尝试解决它。解决此问题的方法是创建使用比区域更低级别的不同路由值的区域,因此例如您的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" }
);
}
}
url: "{area}/{subArea}/{subSubArea}/{subSubSubArea}/{evenMoreSubArea}/{controller}/{action}/{id}",
在您的 RouteConfig.cs 文件中
"Area/SubArea/SubSubArea/SubSubSubArea/EvenMoreSubArea/{controller}/{action}/{id}",
目前还没有任何信息表明会有嵌套区域。
将来可能会有所改变。
目前 MVC 仅支持主应用程序和下一级区域,而不支持嵌套区域,但您可以查看 此 Nuget 包,它为您的项目添加了以下功能:
您不想要嵌套区域。
您的软件设计存在问题。
最常见的情况是,您将区域用作HTML渲染器,因此是显示模板。