我看到很多网站和文章解释说该视图是从模型更新的,如下面的示例 但是我看到MVC架构的一些其他示例显示视图通过控制器
更新这取决于你的观点中是否有@Model?我只是想知道为什么不同版本的MVC,我们被教导它应该是第二个图像。
答案 0 :(得分:10)
MVC是一种松散定义的模式,它为架构师提供了对实现细节的自由裁量权。这可能就是为什么存在如此多的MVC变体的原因。
据我所知,这一切都始于经典(原创)MVC,它将Web应用程序分为三个部分,即模型,视图和控制器。目标是:
模式很吸引人,以至于存在多种变化(主动模型,被动模型,模型2)。这些变化是由于在特定框架中实现模式以适应框架的设计目标。
例如,一个变体是Model2。 Model2是一个Web变体(Classic MVC实际上是桌面应用程序的目标)并且被称为“ASP.NET MVC框架”。
Classic MVC和ASP.NET MVC Framework之间的关键区别在于,后者提供了Model和View之间的完美分离,即没有直接的交互。而Controller则负责促进ASP.NET MVC框架中Model和View之间的这种通信。这使得ASP.NET MVC Framework Web应用程序变得更加容易和轻松。有效地进行测试。
此外,在Model2中,可以在视图和控制器之间建立一种松散的契约。在ASP.NET MVC框架中,此契约过去由ViewData容器对象表示,现在使用ViewModel对象。
为避免混淆,需要查看当前使用的MVC模式实现中这三个部分(模型,视图和控制器)之间的交互。还要接受这样一个事实,即它是MVC模式的特定实现,并且一个图表可能无法完全描述它。