Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc asp.net mvc 3中的嵌套区域_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc asp.net mvc 3中的嵌套区域

Asp.net mvc asp.net mvc 3中的嵌套区域,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,我很难让嵌套区域正常工作 我想使用Areas文件夹中的结构来组织我的区域。即: 区域 管理员 索引(默认) 地点 控制器 模型 观点 应用程序 索引(默认) 历法 控制器 模型 观点 我该如何用路线来构建它,以及如何注册每个区域。“Admin”和“Applications”是我所说的部分,然后实际区域位于一个部分中 我更喜欢使用带有额外元素的路线,例如: routes.MapRoute( "Applications_default", "{secti

我很难让嵌套区域正常工作

我想使用Areas文件夹中的结构来组织我的区域。即:

  • 区域
    • 管理员
      • 索引(默认)
      • 地点
        • 控制器
        • 模型
        • 观点
    • 应用程序
      • 索引(默认)
      • 历法
        • 控制器
        • 模型
        • 观点
我该如何用路线来构建它,以及如何注册每个区域。“Admin”和“Applications”是我所说的部分,然后实际区域位于一个部分中

我更喜欢使用带有额外元素的路线,例如:

routes.MapRoute(
    "Applications_default",
    "{section}/{area}/{controller}/{action}/{id}",
    new { section = "Applications", area = "Index", action = "Index", controller = "Home", id = UrlParameter.Optional }
);
那可能吗

我想我在路由方面遗漏了一些东西,因为添加路由是一回事,但是我该如何命名该区域(AreaName属性)?“管理员/索引”?“管理索引”?“索引”可用于其他地方

目前,我正在尝试使用以下方法进行“正常”区域注册:

public override void RegisterArea(AreaRegistrationContext context) {
context.MapRoute(
    "Admin_Index_default",
    "Admin/Index/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

但是,当我转到时,我得到一个错误:“资源找不到。”:(

我如何构造路线以符合我所需的树结构? 我看了另一个问题:,但它并没有解决我的问题:(

任何帮助和指导都将不胜感激


提前感谢

您不应该重新构造或重新组织您的区域文件夹。保留默认设置,每个区域都有一个控制器、模型和视图文件夹(以及AreaRegistration.cs等)。否则,您可能正在处理一个由命名空间问题组成的蜘蛛网。此外,您还必须告诉razor引擎要检查哪些文件夹才能找到您的视图。相信我,如果您在涉及区域时只遵循约定,您的生活会更愉快

如果你想创建一个深度URL结构,可以使用routes。你的routes可以完全独立于MVC中的文件夹结构(与webforms不同)

您是否尝试在新的MVC项目中使用此方法?也就是说,不要重新排列区域文件夹?只要您的管理区域有一个带有索引操作的HomeController,它就应该可以工作:

public override void RegisterArea(AreaRegistrationContext context) {
    context.MapRoute(
        "Admin_Index_default",
        "Admin/Index/{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

我认为这是不受支持的。对于深度URL,我建议使用,而您可以忘记路由问题。

谢谢您的回答,我遵循了您的建议。我在区域名称中使用名称前缀,而不是嵌套区域。这也为我提供了VS中的功能:)