我在使嵌套区域正常工作时遇到问题。
我想使用区域文件夹中的结构来组织我的区域。即:
- 领域
- 管理员
- 索引(默认)
- 地点
- 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/