繁体   English   中英

Asp.NET MVC是MVC还是MVP?

[英]Asp.NET MVC is MVC or MVP?

当我阅读本文时: http : //www.codeproject.com/Articles/42830/Model-View-Controller-Model-View-Presenter-and-Mod,MVC的解释如下:

视图模型控制器UML图

在此图中,View-Model是观察者模式,其中Model的任何更改都会通知View的Update方法以更新View的状态并将其当前状态传递给这些View。

视图和控制器之间的关系在“策略模式”中定义,其中视图获得了具体的控制器并在由策略模式定义的控制器中运行算法。

因此,控制器会更新模型,模型会通知视图以更新其状态。

但是,由于某些原因,我无法可视化Asp.Net MVC的逻辑,因为控制器可以访问模型并将这些模型传递给视图,但是视图直接使用模型来获取其属性,例如更新其状态,但是我无法适合Asp.Net MVC中视图和模型之间的观察者模式。

有人可以解释一下我错过了什么吗?

ASP.NET MVC保留了Web的无状态性质,因此,一旦呈现视图,控制器就无法知道模型对象实例的更改。

这与诸如Silverlight或WPF的有状态平台不同。 它们是有状态的这一事实允许控制器(如果使用的是MVVM,则为ViewModel)观察UI上发生的事情,对模型对象进行更改,然后相应地更新视图。

在ASP.NET MVC中,当数据从控制器传递到视图时,这是单向行程。 没有等效的View.Update()方法。 视图被渲染一次,仅此而已。 按照Controller.AlgorithmInterface,视图也无法回调到控制器。 您可以通过AJAX回调实现类似的操作,但是随后您必须使用一些幕后魔术来用状态数据重新填充控制器(例如,通过将视图中的对象ID传递回控制器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM