Asp.net mvc 如何在ASP.NET MVC中实现关注点分离?

Asp.net mvc 如何在ASP.NET MVC中实现关注点分离?,asp.net-mvc,view,separation-of-concerns,modular-design,Asp.net Mvc,View,Separation Of Concerns,Modular Design,从2007年12月的预览版1开始,我就一直在学习、使用ASP.NET MVC。自2008年以来,我一直是它的粉丝,我一直支持它 然而,我一直在听和读“ASP.NET MVC强制严格分离关注点”,包括在Rob Conery、Scott Hanselman、Phil Haack和Scott Guthrie的专业ASP.NET MVC 1.0中阅读 我不明白的是执法。如果我定义我的控制器时只使用 return View(); 在视图(aspx视图引擎)中,我什么都做?(数据获取、业务逻辑、决策、呈现

从2007年12月的预览版1开始,我就一直在学习、使用ASP.NET MVC。自2008年以来,我一直是它的粉丝,我一直支持它

然而,我一直在听和读“ASP.NET MVC强制严格分离关注点”,包括在Rob Conery、Scott Hanselman、Phil Haack和Scott Guthrie的专业ASP.NET MVC 1.0中阅读

我不明白的是执法。如果我定义我的控制器时只使用

return View();
在视图(aspx视图引擎)中,我什么都做?(数据获取、业务逻辑、决策、呈现等)

它(ASP.NET MVC)如何强制执行me来分离关注点

我认为这是一种明显的夸大,应该改为“表明关注点分离”


你能让我相信它是强制执行的吗?

最重要的是它是从右脚开始的,即一个单独的控制器和视图。如果你选择做一些疯狂的事情,没有人会阻止你。除了同行评议。还有常识


但是与webforms不同,在webforms中,你必须尝试非常努力而不是来混合关注点。

当然,你可以在视图中做任何事情。你只是一个糟糕的程序员,根本不会遵循MVC模式


我还非常确定,有些事情在视图中根本无法执行,只能在控制器中执行。不过,我可能把.Net和Rails弄糊涂了。

我认为它并没有强制执行它,所以它们可能会错调。就像你说的,“建议”或“促进”是一个更好的词。

对于你想要的那种“强制执行”,你会建议什么机制?当视图代码的圈复杂度超过某个阈值时,框架是否应该发出警告?框架是否应该在源上运行类似于
lint
的内容,并在您执行MVC操作时(无论这些是什么)时拍打你的手腕


更重要的是,所有这些指指点点的好处是什么?我们不是在尝试编写让用户满意的应用程序吗?

对沉默的downvoter说:正如网站所说。。。“我是沉默的投票人。我的感觉是,这个问题对堆栈溢出没有什么价值。从您的示例中可以清楚地看到,所有逻辑都在ASPX页面中,“强制”可能不是文档使用的正确术语。所以,是的,你是对的。该框架没有强制执行严格的分离。但我不确定为什么这是有价值的信息,或者为什么任何人都会关心MVC是否强制或鼓励分离关注点。这感觉就像对一些不重要的事情吹毛求疵,因此我投了反对票。。。当然,这并不能强制你将关注点分开。它是一个指南或“框架”,你可以选择遵循或不遵循。如果我得了100分,我也会投反对票。我希望在某个地方有一些隐藏的开关(比如“严格模式”的东西),它实际上会强制在视图或控制器中进行很少的访问?好吧,我想没有,我目前得到的答案似乎指向了这一点。谢谢你的澄清!:)@thinkzig对你来说很清楚,问这个问题的人呢?更不用说那些讨厌的SqlDataSource控件,它们引诱你做坏事。在视图中我不能做的事情是什么?这是我问题的一部分。我认为ViewState不存在。这是你不能做的事。:)这无疑是一个进步,我同意。谢谢。微软4位主要人物在第86页第27行的“专业ASP.NET MVC 1.0”中表现出色“MVC模式的一个定义特征是,它有助于在应用程序的不同组件之间实现严格的关注点分离。我认为关键在于它有助于实现。我同意Matt的观点,你必须不遗余力地做一些事情,比如在其中放一个GridView。我认为RoR也是“自以为是”的,你可能会认为它给出了一个“意见”,看到所有的新手都在写我们中的一些人需要处理或重写的糟糕代码,是的,我想要一些能拍击你手腕的东西。我问你希望如何实现拍击手腕的问题的原因,我想,是为了说明以任何有意义的方式这样做的困难。