关于c#:ASP.NET MVC:结构化控制器

关于c#:ASP.NET MVC:结构化控制器

ASP.NET MVC: Structuring Controllers

因此,我正在着手ASP.NET MVC项目,虽然总体上是一个很好的经验,但是我对控制器所造成的意大利面条混乱感到不满意。我在网上浏览了一下(CodeCampServer等),它们似乎都遇到相同的问题,其中控制器方法非常一致地违反了SRP(单职责原则)-例如,如果请求是请求,则仅呈现视图的控制器方法GET,但如果是POST,则更新model。现在,我有了负责整个应用程序中多个逻辑路由的控制器方法-说它检查在表单上单击了哪个button并采取相应的措施。我可以使用JavaScript将每个按钮单击重定向到不同的表单操作,但是那里也感觉不到……另一个大问题是魔术strings - ViewData["foo"] = blah;的泛滥长话短说,你们structure controller逻辑?每个视图一个巨大的模型对象?很多小的controller methodsJavaScript是路由器吗?我的目标是可维护的代码-随着功能的堆积,我开始滑到那光滑的斜坡上...


ASP.NET Preview 5(在CodePlex上可用)对此有一个答案:[AcceptVerbs]属性。 Phil Haack在博客文章中讨论了如何使用它。

至于视图数据魔术关键问题,这是一个有趣的问题。如果您认为视图是一堆半独立的组件(尤其是考虑到新的部分视图支持),那么建立强类型模型就变得不太理想,因为视图的几部分应该相对独立另一个。


不同的人如何处理这个问题?我知道我只是花了几个小时来查看模型文件夹中的杂物。我发现创建文件夹有助于减少视觉混乱,使用匹配的命名空间也有很大帮助。

但是目前我的控制器是独石。麻烦的是,我在项目的这一点上一直专注于学习(还有很多要解决的问题)。

我现在对MVC有了很好的了解,因此该是时候回顾一下复杂性并考虑将控制器修改为更好命名和更简洁的功能了。

其他人是否将他们的控制器分解为子控制器? (如果有这样的事情)


推荐阅读