2012-06-26 64 views
2

如果您知道WPF MVVM模式,那麼你知道約什 - 史密斯的MSDN文章,其中一個CustomerViewModel不舉行簡單的屬性,如:是在ViewModel在asp.net媲美的ViewModel在WPF

public string FirstName {get;set;} 

相反一個視圖模型包裝模型和代表這樣的屬性訪問:

public string FirstName 
{ 
    get { return _customer.FirstName; } 
    set 
    { 
     if (value == _customer.FirstName) 
      return; 
     _customer.FirstName = value; 
     base.OnPropertyChanged("FirstName"); 
    } 
} 

我還沒有在asp.net mvc的看到了這一點。這是由於缺少INotifyPropertyChanged接口嗎?

回答

2

我還沒有在asp.net mvc的

這是正常的看到了這一點。你不應該看到它。 MVC是與MVVM不同的模式。在MVC中,視圖沒有人通知任何更改。 MVVM模式不適應網絡的無狀態特性。

+0

不錯,你說的「網絡的無狀態」,而不是「asp.net」;-) – Pascal

2

從MVVM的ViewModelModel片中,MVC

在MVVM使用時比不同的定義,ViewModel是您的應用程序,而只是View提供了一個友好的用戶界面吧。在MVC中,View是您的應用程序,ViewModel爲其提供數據,而Controller則處理應用程序流和邏輯。

這兩種模式的模型也不同。在MVC中,M表示數據模型和視圖模型,而在MVVM中,M僅表示數據模型。

總之,MVC的M+C等於MVVM的​​和MVC的M同時包含MVVM的M和​​件

作爲一個方面說明的搭配,INotifyPropertyChanged接口由WPF自動更新時,用戶界面屬性發生變化。這種事情不在MVC中使用,所以不需要。

+0

你有一個官方的MS鏈接,其中寫的「M」在MVC代表(模型和viewmodel)?從來沒有聽說過。 – Pascal

+0

@Pascal不,我沒有官方的MS鏈接,這只是我自己對模式的定義。我從MVVM開始,最近一直在使用MVC,'Models'和'ViewModels'的不同定義讓我困惑了一陣子。 MVC中的ViewModel是一個數據模型,用於包含View的數據,而MVVM中的ViewModel則用於包含應用程序邏輯和命令處理以及特定於視圖的數據。 – Rachel

+0

MVVM中的視圖模型具有應用程序邏輯和命令處理的原因是因爲它背後的技術。 MVC和MVVM這兩個模式都具有驗證輸入邏輯的視圖模型,即應用程序邏輯。 ViewModel包含asp.net mvc中的View和mvvm中的wpf中的數據。除了像綁定/命令等那樣的技術之外,我沒有看到任何區別。 – Pascal