Asp.net mvc 在MVVM中将模型读入ViewModels和其他方式-最佳实践-

Asp.net mvc 在MVVM中将模型读入ViewModels和其他方式-最佳实践-,asp.net-mvc,viewmodel,Asp.net Mvc,Viewmodel,我想了解一下你的日常工作:p 如何将人员数据读入PersonViewModel 这仅仅是一个问题吗 PersonViewModel pVM = staticHelper.ConvertPersonToPersonViewModel(person); 还是有更酷的东西?一些人主张 其他人可能会 当然,没有什么规定在复制构造函数中不能使用反射来复制属性。只需将Person对象包含在视图模型中,根本不要尝试复制该对象 public class PersonViewModel { publi

我想了解一下你的日常工作:p

如何将人员数据读入PersonViewModel

这仅仅是一个问题吗

PersonViewModel pVM = staticHelper.ConvertPersonToPersonViewModel(person);
还是有更酷的东西?

一些人主张

其他人可能会


当然,没有什么规定在复制构造函数中不能使用反射来复制属性。

只需将Person对象包含在视图模型中,根本不要尝试复制该对象

public class PersonViewModel 
{
    public Person Person { get; set; }

    ... plus other properties your view model might need
}
然后在控制器中:

PersonViewModel pVM = new PersonViewModel { Person = person } ;

是自
for
循环以来最好的东西,甚至可能是
if
语句。

我认为您误解了viewmodel的要点。
viewmodel应该是模型的映射/接口,而不是它的副本。

所以在我的viewmodel中我有这样一个:公共字符串FirstName{return Person.FirstName;},嘿,这很聪明!这是一种方法,但你不需要这样做。在您的视图(第页)中,只需参考Model.Person.firstname,但这就是Josh smith的做法!:P ViewModel将绑定委托给模型。。。顺便问一句,如何使用主-细节关系(如CustomerServiceWModel)聚合ViewModel?谁拥有OrderViewModel列表?在主详图中,视图模型将只包括主对象和列表详图。公共类ViewModel{Public Master Master{get;set;}公共列表详细信息{get;set;}}。希望这是有意义的。从来没有说过这是一个副本,但我经常看到它的实现方式使它看起来像一个副本…它可能看起来像一个副本,因为它是一个映射。