【发布时间】:2013-09-01 15:22:45
【问题描述】:
背景: 我一直在考虑这个问题,但我没有找到任何好的答案。在使用 WebForms 并定期使用 MVC 2,3 和 4 工作一段时间后,我仍然不明白 ASP.NET MVC 如何声称是 MVC 模式的实现。
我了解 MVC(模式)的第一件事是它是循环的——这意味着视图使用更新模型的控制器来更新视图——并且它以这种方式循环往复。自然与圈内的用户一起输入新的指令/数据等。
但是,ASP.NET MVC 并不是真正的循环实现,这在 W3CSchools 的下面彩色图像中得到了很好的展示。我在实践中也看到过这种情况,其中 View 有一个 Model 的实例,并且 Model 是从 Controller 更新的,但 Controller 还负责在 Model 更新后更新 View。
问题: ASP.NET MVC 是有意识地错误实现的吗?应该仅将其视为专有解释还是我误解了 MVC 模式的规则?
【问题讨论】:
-
好问题。我见过的其他 MVC 框架实现将视图与模型隔离开来。 iOS 和 Android 开发就是示例。在 ASP.NET MVC 中,您可以在视图中使用模型。
-
是的,这是错误的。主要是因为最初的 1.x 版本将 Rails 作为模板(它实际上实现了 PAC 和 PageController 混合的奇怪混蛋)。当前的 ASP.NET MVC 版本仍在遭受这种选择。
-
如果可以,我会标记为答案。
-
如果它可以适合“cmets 字段”,那么它不值得作为答案发布。恕我直言,拥有 10k+ 点数的用户不应该是代表嫖娼。
-
不幸的是,Web 应用程序有几个限制,使得传统的“纯”mvc 模型不切实际,因此大多数基于 Web 的 MVC 框架不得不做出让步,并且往往比纯 mvc 更关注关注点分离. Web 应用程序是无状态的,并且通常大部分表示逻辑在服务器和客户端之间分离。
标签: asp.net asp.net-mvc model-view-controller architectural-patterns