MVC - 是查看模型还是控制器查看?

Mat*_*093 17 .net model-view-controller asp.net-mvc

我看到许多网站和文章解释了视图是从模型更新的,如下例所示 MVC 但是我看到MVC架构的一些其他示例显示视图通过控制器更新 在此输入图像描述

这取决于你是否将@Model纳入你的观点?我只是想知道为什么不同版本的MVC,我们被教导它应该是第二个图像.

SBi*_*are 10

MVC是一种松散定义的模式,它为架构师提供了对实现细节的自由裁量权.这可能就是为什么存在如此多的MVC变体的原因.

据我所知,这一切都始于经典(原创)MVC,它将Web应用程序分为三个部分,即模型,视图和控制器.目标是:

  • 在Model和View之间实现松散耦合(用于实现它的Observer模式).
  • 将业务逻辑封装到模型中,以便对其进行详尽的测试.
  • 尽可能使视图变得笨/稀,以减少测试它的需要.

标准MVC交互

这种模式很多,以至于存在多种变化(主动模型,被动模型,模型2).这些变化是由于在特定框架中实现模式以适应框架的设计目标.

例如,一种变体是Model2.Model2是一个Web变体(Classic MVC实际上是桌面应用程序的目标)并且很受欢迎,因为它是"ASP.NET MVC框架".

ASP.NET MVC框架中的Model2交互

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模式的特定实现,并且一个图可能无法完全描述它.