ASP.NET MVC:结构化控制器

时间:2020-03-05 18:45:31  来源:igfitidea点击:

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

解决方案

回答

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

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

回答

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

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

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

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