我无法让嵌套区域工作。
我想在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属性)? “管理员/指标”? “Admin.Index”? “索引”可以在其他地方使用..
现在我正在使用以下方式尝试“正常”区域注册:
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?,但它没有解决我的问题:(
任何帮助和指导将不胜感激!
提前致谢
答案 0 :(得分:3)
您不应重组或重新组织您的区域文件夹。保持默认值,每个区域都有一个Controllers,Models和Views文件夹(以及AreaRegistration.cs等)。否则,您可能正在处理名称空间问题的spiderweb。此外,您必须告诉剃须刀引擎检查哪些文件夹以查找您的视图。相信我,如果你只是遵循各地区的惯例,你的生活会更快乐。
如果要创建深层URL结构,请使用路由。您的路由可以完全独立于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 }
);
}
答案 1 :(得分:1)
我不认为这是支持的。对于深层网址,我建议使用MvcCodeRouting,您可以忘记路由问题。