基本上,这个“问题”旨在汇集有关社区最佳实践的信息。原因是:
我对是否应该提出这个问题进行了认真考虑,甚至还要创建question on meta来创建这个问题。 :)
我正在寻找的是有关ASP.NET MVC所有方面的最佳实践信息。控制器,模型,扩展,HTML帮助程序,路由构建器,TDD。
过去,我发现资源,例如Kazi Manzur Rashid的最佳做法(部分1和2)非常有用,以及Maarten Balliauw的weigh-in,但这些已经枯竭了,我希望能够从不同的人那里获得更有活力和不断增长的信息库,而不仅仅是偶尔从有学问的人那里获取博客。像这样的信息很少,而ASP.NET MVC社区资源则更少。
随意添加模型链接
随意添加控制器链接
P.S。请不要只是按“Phil Haack,Scott Guthrie,Rob Conery或Scott Hanselman”添加“任何内容”!
答案 0 :(得分:10)
使用T4MVC消除整个项目中的所有魔术字符串和魔术匿名类型。这将帮助您稍后在项目中进行重构,并且(除了必须确保您的路由定义良好之外)所有Action调用都会获得正确的参数。它改变了这样的调用:
<%= Html.ActionLink("Link text", "Products", "Details", new { id = Model.Id }) %>
分为:
<%= Html.ActionLink("Link text", MVC.Products.Details(Model.Id)) %>
答案 1 :(得分:7)
ViewModel DTO对象:
BaseViewModel抽象类,具有呈现页面元数据,菜单和每个页面上显示的所有其他内容的属性。所有其他ViewModel类都继承自BaseViewModel。
答案 2 :(得分:7)
将任何和所有逻辑排除在您的视野之外。你的控制器应该确定显示的内容 - 你的观点应该是愚蠢的。
答案 3 :(得分:3)
虽然不是最佳实践网站,但以下网站使用asp.net MVC做得很好,可能被认为是最佳做法。
答案 4 :(得分:3)
答案 5 :(得分:3)
让您的控制器尽可能“瘦”。只需让它们验证来自表单的数据,然后调用模型(完成所有实际工作)即可在下一个View中返回数据。
让复杂的控制器破坏了MVC的概念。
答案 6 :(得分:1)
这就是我在我的应用程序中处理所有DropDowns的方式,我想与你分享,因为我认为这是最佳实践: