如果您知道 WPF 的 MVVM 模式,那么您就会知道 Josh smith msdn 文章,其中 CustomerViewModel 不包含简单的属性,例如:
public string FirstName {get;set;}
相反,ViewModel 包装模型并委派属性访问权限,如下所示:
public string FirstName
{
get { return _customer.FirstName; }
set
{
if (value == _customer.FirstName)
return;
_customer.FirstName = value;
base.OnPropertyChanged("FirstName");
}
}
我没有在 asp.net mvc 中看到过这个。这是由于缺少 INotifyPropertyChanged 接口吗?
我没有在 asp.net mvc 中看到这个
这很正常。你不应该看到它。MVC 是与 MVVM 不同的模式。在 MVC 中,视图没有人通知任何更改。MVVM 模式不适合 Web 的无状态性质。
MVVM 中的 ViewModel
和 Model
部分的定义与 MVC 中使用的定义不同
在 MVVM 中,ViewModel
是您的应用程序,而View
只是为其提供用户友好的界面。在 MVC 中,View
是应用程序,ViewModel
为其提供数据,Controller
处理应用程序流和逻辑。
两种模式之间的模型也不同。在 MVC 中,M
表示数据模型和视图模型,而在 MVVM 中,M
仅表示数据模型。
总而言之,MVC 的M+C
等于 MVVM 的VM
,而 MVC 的M
包含 MVVM 的M
和VM
部分的混合。
作为旁注,WPF 使用 INotifyPropertyChanged
接口在属性更改时自动更新 UI。这种东西在MVC中没有使用,所以不需要。