我看到了很多关于如下示例所示的观点,即视图从模型中更新 。然而,我看到了一些其他的MVC架构示例,显示视图是通过控制器更新的
这取决于您是否在视图中使用@Model吗?我只是想知道为什么有不同版本的MVC,我们被教导应该是第二个图像。
我看到了很多关于如下示例所示的观点,即视图从模型中更新 。然而,我看到了一些其他的MVC架构示例,显示视图是通过控制器更新的
这取决于您是否在视图中使用@Model吗?我只是想知道为什么有不同版本的MVC,我们被教导应该是第二个图像。
MVC是一种定义不太明确的模式,它赋予了架构师许多实现细节的自主权。这也可能是为什么存在如此多变体MVC的原因。
据我所知,一切都始于最初的Classic MVC(经典MVC),将Web应用程序分为三个部分:Model(模型)、View(视图)和Controller(控制器)。目标是:
该模式迷住了许多人,因此产生了几种变体(Active Model、Passive Model、Model2)。这些变体是由于在特定框架中实现该模式以适应框架设计目标而产生的。
例如,一种变体是Model2。 Model2是Web版本(Classic MVC实际上是针对桌面应用程序的),并且作为“ASP.NET MVC框架”而广受欢迎。
Classic MVC和ASP.NET MVC框架之间的关键区别在于,后者提供了Model和View之间的清晰分离,即没有直接交互。相反,Controller负责在ASP.NET MVC框架中促进Model和View之间的通信。这使得ASP.NET MVC框架Web应用程序更容易和高效地进行测试。
此外,在Model2中可以建立一种松散的契约,该契约可以在视图和控制器之间建立。在ASP.NET MVC框架中,此契约曾经由ViewData容器对象表示,现在使用ViewModel对象表示。
为避免混淆,需要查看当前正在使用的MVC模式实现中这三个部分(Model、View和Controller)之间的交互。同时要认识到它是MVC模式的一个特定实现,一个图表可能无法完全描述它。