所以我正在着手一个ASP.NET MVC项目,虽然整体经验很好,但我对控制器已经变成的意大利面条很不满意.我在网上看了看(CodeCampServer等等),他们似乎都遇到了同样的问题,其中控制器方法非常一致地违反SRP(单一责任原则) - 例如一个控制器方法,如果请求是简单的呈现视图如果是POST,则更新模型.现在我有控制器方法负责整个应用程序中的多个逻辑路由 - 比如它检查在表单上单击了哪个按钮并采取相应的行动.我可以使用JavaScript将每个按钮单击重定向到不同的表单操作,但是有些东西感觉不对...... 另一个大问题是魔术字符串的泛滥--ViewData ["foo"] = blah; 长话短说,你们如何构建控制器逻辑?每个视图一个巨型模型对象?路由器有很多小控制器方法和JavaScript吗?我的目标是可维护的代码 - 随着功能的积累,我开始滑下滑坡......
ASP.NET Preview 5(在CodePlex上提供)有一个答案:[AcceptVerbs]属性.Phil Haack在博客文章中讨论了它是如何使用的.
至于视图数据魔术关键问题,这是一个有趣的问题.如果你(特别是在新的局部视图支持的光)认为一个视图作为一帮半独立的组件中,然后产生一个强类型的模式变得不太理想,因为几件的观点应该是相对独立的另一个.