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

标签 asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我在使嵌套区域正常工作时遇到问题。

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

  • 领域
    • 管理员
      • 索引(默认)
      • 地点
        • Controller
        • 型号
        • 观看次数
      • ...
    • 应用
      • 索引(默认)
      • 日历
        • Controller
        • 型号
        • 观看次数
      • ...
    • ...

我该如何构建路线以及如何注册每个区域。 “管理”和“应用程序”是我所说的部分,然后实际区域位于部分内。

我更喜欢使用带有额外元素、部分的路线,如下所示:

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 }
);

}

但是当我去http://localhost:60864/Admin/Index/Home/Index时我收到一条错误消息:“找不到资源。” :(

如何构建我的路线以符合我想要的树结构? 我又看了一个问题:Can I nest areas in ASP.NET MVC? ,但这并没有解决我的问题:(

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

提前致谢

最佳答案

您不应重组或重组您的区域文件夹。保留默认值,其中每个区域都有一个 Controllers、Models 和 Views 文件夹(加上 AreaRegistration.cs 等)。否则,您可能会遇到由命名空间问题组成的蜘蛛网。此外,您还必须告诉 Razor 引擎要检查哪些文件夹才能找到您的 View 。相信我,如果您在涉及领域时遵循惯例,您的生活会更幸福。

如果您想创建深层 URL 结构,请使用路由来实现。您的路由可以完全独立于 MVC 中的文件夹结构(与 Web 表单不同)。

您是否在新的 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 }
    );
}

关于asp.net-mvc - asp.net mvc 3 中的嵌套区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040546/

相关文章:

c# - 根据请求从 MVC web api 返回 xml 或 json

asp.net-mvc - MVC 中使用破折号路由可选参数

c# - 测试 ASP.NET MVC Controller Httpget

javascript - 无法更改 html 选择 JavaScript 中的选定值

asp.net-mvc-3 - MVC 3 Razor,具有自定义标记/部分的助手

asp.net-mvc - 我可以在 Razor View 中访问 C# 枚举吗?

c# - 计算未在 Razor 中正确显示

c# - 委托(delegate)不起作用

javascript - 火狐浏览器奇怪的问题

c# - 参数字典包含参数的空条目