我来自Asp.Net背景,我正在为一个新项目评估Asp.Net MVC.我看不出如何充分构建大型项目.
我很满意模型/视图/控制器架构,我现在正试图让区域工作(这看起来很复杂).
你能在区域内拥有区域吗?你能把视图放在dll中吗?
我真的需要一个起点,是否有资源显示如何构建大型MVC项目,假设最终在项目中将有100多个视图,我不希望它们都在同一个文件夹中,理想情况下我会像子文件夹
谢谢你的帮助
编辑:我可以看到每个控制器映射到一个View文件夹,我想要的是更像这样的东西
Areas
Mail
Absence
SimpleAbsenceController.cs
ComplexAbsenceController.cs
Overtime
SimpleOvertimeController.cs
ComplexOvertimeController.cs
Etc
编辑2:也许这更像是一个路由问题,我可以从以下地图进行映射:http: //www.mystuff.com/SimpleAbsence/Index
到Mail/Absence/SimpleAbsenceController
从根本上说,我想要一种将项目结构化为文件夹的方法
我讨厌回答我自己的问题,因为我觉得它破坏了其他试图提供帮助的人的工作,同时其他人可能会看到这个问题,这些都是新手问题,所以...
(这都是从阅读Pro ASP.Net MVC5,好书)
我想知道Asp.Net MVC在使用子文件夹或dll方面有多大的灵活性.这个答案解决了子文件夹的问题.
答案
您可以将控制器放在磁盘上的文件夹方面 - 这些是编译的,但是......
使用区域时,AreaRegistration.cs文件中的MapRoute会自动限制到该区域的命名空间的路由.因此,如果您将控制器移动到某个区域 - 您必须更改命名空间或Url.Action等方法将失败
视图必须保持原样,因此对于名为Fred的控制器,必须有这样的结构:
View - Fred - Action1 - Action2 - etc
您可以使用自己的路由系统解决所有这些问题,您可以使用自定义路由解决命名空间问题,但我的观点是您应该使用系统的新手,直到您完全了解破坏的后果为止.规则
所以这意味着你可以将一个拥有几百个视图的大项目全部集中在一个文件夹中.它并不像控制器可以在子文件夹中那样糟糕,您可以直接从它们映射到视图.
您在路由系统中也具有灵活性,因此无论磁盘上的控制器在哪里,您都可以拥有任何您喜欢的URL!
例如,此路线从
http://www.example.com/App/DoSomething映射到
http://www.example.com/Home/Something,无需更改
routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" });
Run Code Online (Sandbox Code Playgroud)
注意:如果这样做,请确保使用Html.ActionLink或Url.Action(或等效项)而不是直接链接,这些足够聪明,可以根据路由生成正确的URL.
正如我所说,完成新手问题,但我相信其他人会有同样的问题,感谢MiniRagnarok的实例项目
| 归档时间: |
|
| 查看次数: |
5479 次 |
| 最近记录: |