所以我正在开始一个ASP.NET MVC
项目,虽然整体经验很好,但我对控制器已经变成的意大利面条很不满意。我在网上看了看(CodeCampServer等等),他们似乎都遇到了同样的问题,其中控制器方法非常一致地违反SRP(单一责任原则) - 例如一个控制器方法,如果请求是简单的呈现视图GET
model
但如果POST
为button
,则会更新strings - ViewData["foo"] = blah;
。现在我有控制器方法负责整个应用程序中的多个逻辑路由 - 比如它检查在表单上单击了哪个structure
并采取相应的行动。我可以使用JavaScript将每个按钮单击重定向到不同的表单动作,但是某些东西感觉也不正确...另一个大问题是魔法的扩散controller
长话短说,你们怎么样{{ 1}}你的controller methods
逻辑?每个视图一个巨型模型对象?路由器有很多小JavaScript
和{{1}}?我的目标是可维护的代码 - 随着功能的逐渐增加,我开始滑下滑坡......
答案 0 :(得分:9)
ASP.NET Preview 5(CodePlex上提供)有一个答案:[AcceptVerbs]属性。 Phil Haack对blog post如何使用进行了讨论。
对于视图数据魔术键问题,这是一个有趣的问题。如果你认为一个视图是一堆半独立的组件(特别是考虑到新的局部视图支持),那么使一个强类型模型变得不太理想,因为视图的几个部分应该相对独立于彼此。
答案 1 :(得分:0)
不同的人如何处理这个问题?我知道我只花了几个小时来审查模型文件夹里面的混乱。我发现创建文件夹有助于减少视觉混乱,使用匹配的命名空间也有帮助。
但我的控制器目前是巨石。麻烦的是,我一直专注于在项目中学习这一点(还有很多要解决的问题)。
我现在已经很好地处理了MVC,所以现在是时候审查复杂性并考虑将控制器修改为更好的命名和更清晰的功能。
其他人是否将控制器分解为子控制器? (如果有这样的事情)