簡體   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