【问题标题】:ASP.NET MVC: Structuring ControllersASP.NET MVC:结构化控制器
【发布时间】:2010-09-07 08:43:33
【问题描述】:

所以我开始了一个ASP.NET MVC 项目,虽然总体上体验很好,但我对我的控制器变得一团糟并不太满意。我在网上环顾四周(CodeCampServer 等),它们似乎都遇到了同样的问题,其中控制器方法非常一致地违反了 SRP(单一责任原则)——例如,如果请求是,控制器方法只会呈现视图GET,但如果是 POST,则更新 model。现在我有控制器方法负责整个应用程序中的多个逻辑路由 - 比如说它检查在表单上单击了哪个 button 并采取相应的行动。我可以使用 JavaScript 将每个按钮单击重定向到不同的表单操作,但那里也感觉不对劲......另一个大问题是魔法的扩散strings - ViewData["foo"] = blah; 长话短说,你们structure你的controller 逻辑?每个视图一个巨大的模型对象?很多小controller methodsJavaScript 是路由器吗?我的目标是可维护的代码——随着功能越来越多,我开始滑下那个滑坡......

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    ASP.NET 预览版 5(在 CodePlex 上可用)对此有一个答案:[AcceptVerbs] 属性。 Phil Haack 有一个blog post 讨论如何使用它。

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

    【讨论】:

      【解决方案2】:

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

      但我的控制器目前是单体。问题是我一直专注于学习项目中的这一点(还有很多东西需要整理)。

      我现在对 MVC 有了很好的了解,所以是时候回顾一下复杂性并考虑将控制器修改为命名更好、更简洁的函数了。

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

      【讨论】:

      • 对控制器进行编码的诀窍是查看它们并说“如果每个操作方法超过 20 或 30 行或一些相对较小的行数,我该如何减少它?”,基本上,保持它 DRY 并重新考虑你在做什么,并将该逻辑移动到一些适当的 SERVICE 层,可以重用。
      • 另外,下载 ROB CONERY 的 StoreFront MVC Starter Kit,看看他是如何分层解决方案的 -> 非常棒。 (谷歌它,我懒得在这么晚(早?!)早上找到链接......hth!
      猜你喜欢
      • 2011-02-02
      • 2023-03-11
      • 1970-01-01
      • 2023-04-05
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      相关资源
      最近更新 更多