最好的解释方法是举个例子:
这是模型
public class Person
{
public int age;
public string name;
}
这是 View 模型
public class PersonVM
{
}
我的问题是:
虚拟机应该将人员暴露给数据模板还是用自己的属性封装模型属性?
最佳答案
View 模型应该声明自己的属性,并从 View 中隐藏模型的细节。这为您提供了最大的灵活性,并有助于防止 View 模型类型的问题泄漏到模型类中。通常,您的 View 模型类通过委派来封装模型。例如,
class PersonModel {
public string Name { get; set; }
}
class PersonViewModel {
private PersonModel Person { get; set;}
public string Name { get { return this.Person.Name; } }
public bool IsSelected { get; set; } // example of state exposed by view model
public PersonViewModel(PersonModel person) {
this.Person = person;
}
}
请记住:该模型对使用它的 View 模型一无所知,而 View 模型对使用它的 View 也一无所知。该 View 对潜伏在后台的模型一无所知。因此,将模型封装在 View 模型的属性后面。