我从2007年(12月)的预览1开始学习,使用和使用ASP.NET MVC。自2008年以来,我一直是它的粉丝,我一直支持它。
然而,我一直听到并阅读“ASP.NET MVC强制严格分离关注点”,包括由Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie在Professional ASP.NET MVC 1.0中阅读。
我不明白的是强制执行。如果我用除了
之外的动作定义我的控制器怎么办?return View();
在视图中(aspx视图引擎)我做的一切? (数据获取,业务逻辑,决策,渲染等)
如何(ASP.NET MVC) ENFORCE 我将这些问题分开?
我认为这是一种公然的夸大其词,应该是“暗示关注点分离”。
你能说服我强制执行吗?
答案 0 :(得分:7)
主要的是它从右脚开始 - 即一个单独的控制器和视图。如果你选择做一些疯狂的事情,没有人会阻止你。希望同行评审除外。和常识。
但与webforms相比,你必须尝试非常坚硬 来混淆这些问题。
答案 1 :(得分:4)
我认为它没有强制执行,所以他们可能会误导。就像你说的那样,“暗示”或“促进”是一个更好的词。
答案 2 :(得分:2)
当然,您可以在视图中执行所有操作。你只是一个可怕的程序员,根本不会遵循MVC模式。
我也很确定在视图中你根本不能做一些事情,只在控制器中。不过,我可能会让我的.Net和Rails感到困惑。
答案 3 :(得分:2)
您建议采用哪种机制来“执行”您想要的那种?当View代码的圈复杂度超过某个阈值时,框架是否应该发出警告?框架是否应该在您的源代码上运行类似lint
的内容,并在您执行非MVC事件(无论是那些)时拍你的手腕?
更重要的是,所有那些手指摇摆的好处会是什么?我们不是在尝试编写满足用户需求的应用程序吗?