Asp.NET MVC是MVC还是MVP?

Tar*_*rik 2 .net c# asp.net asp.net-mvc design-patterns

正如我一直在阅读这篇文章:http://www.codeproject.com/Articles/42830/Model-View-Controller-Model-View-Presenter-and-Mod,MVC解释如下:

视图 - 模型 - 控制器UML图

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

视图和控制器之间的关系在策略模式中定义,其中视图获取具体控制器并在策略模式定义的控制器中运行算法.

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

但是,出于某种原因,我无法想象Asp.Net MVC的相同逻辑,因为控制器可以访问Model并将这些模型传递给Views但是视图直接使用Models来获取它们的属性等来更新它们的状态但是我不能适合Asp.Net MVC中视图和模型之间的观察者模式.

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

Iva*_*jas 5

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

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

在ASP.NET MVC中,当数据从控制器传递到视图时,它是单向行程.没有等效的View.Update()方法; 视图会被渲染一次然后就是它了.根据Controller.AlgorithmInterface,视图也无法回调控制器.您可以使用AJAX回调实现类似的功能,但是您必须使用一些幕后魔法来使用状态数据重新填充控制器(例如,通过将对象ID从视图传递回控制器).