我已经阅读了几篇关于MVVM模式的文章和教程,但有一件事我找不到有关的独特信息。我们来看下面的例子:
该模型包含两个字段和属性:
private string username;
public string Username {
get; set;
}
private string password;
public string Password {
get; set;
}
现在,视图模型应该包含什么?它应该只包含模型的实例还是应该“重新暴露”模型的属性?
private Model _model;
public Model Model {
get; set;
}
或者...
private Model _model;
public Model Model {
get; set;
}
public Username {
get { return _model.Username; }
set { _model.Username = value; }
}
我在几篇文章中看到了两种变体,现在不确定哪种方法是正确的。
答案 0 :(得分:1)
这个问题没有一般的正确或错误的答案。这取决于背景和个人偏好。
我个人倾向于不直接将模型暴露给视图。我喜欢有一个专门为视图定制的ViewModel。我不想仅仅因为视图需要它而在模型中实现任何东西(当模型暴露给视图时我可能会这样做)。
在我的ViewModel中,我希望尽可能少地依赖于模型。如果我可以侥幸逃脱,我希望有一个ViewModel,它与Model 没有直接的依赖关系(并且有一些外部实体/服务填充做映射)。