【发布时间】:2017-10-12 12:32:09
【问题描述】:
为了防止我的应用程序变得混乱,我开始使用区域。但现在我总是要打电话给:
http://localhost:49358/Document/Document/
而不是:
http://localhost:49358/Document/
如何更改我的路线以通过区域名称访问控制器?
(没有 HomeController)
我的项目中有以下文件夹结构:
routes.MapRoute(name: "areaRoute",template: "{area:exists}/{controller=Home}/{action=Index}");
然后我将 [Area("Document")] 标签放在 DocumentController 中。
编辑:
根据 Shyju 和 Jamie Taylor 的建议,我选择了 HomeControllers。 (谢谢你们的快速回答和解释)
对我来说,拥有如此多的 HomeController 和索引文件仍然有点令人失望。导航代码不再那么容易了:
编辑2:
在对所有这些 Homecontrollers 感到厌烦之后,我采用了 Jamie Taylor 建议的解决方案,并将所有内容重新排列在 Features 文件夹中。它需要更多的配置,但我认为它更干净。
在这篇微软文章中也有进一步的解释(跳过区域的东西):
https://msdn.microsoft.com/en-us/magazine/mt763233.aspx
【问题讨论】:
-
我不确定这就是区域的用途。也许你应该重新考虑你的架构。也许您可以在文档区域下添加一个剃须刀页面,它的作用类似于索引页面并提供文档索引视图的所有功能
-
“区域是一种 ASP.NET MVC 功能,用于将相关功能组织到一个组中,作为单独的命名空间(用于路由)和文件夹结构(用于视图)”对我来说听起来很有希望。否则你会推荐什么?
-
您在我的编辑完成之前到达那里:P
标签: c# .net asp.net-core asp.net-core-mvc asp.net-routing