Asp.net mvc 在MVVM中将模型读入ViewModels和其他方式-最佳实践-
我想了解一下你的日常工作:p 如何将人员数据读入PersonViewModel 这仅仅是一个问题吗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
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;}}。希望这是有意义的。从来没有说过这是一个副本,但我经常看到它的实现方式使它看起来像一个副本…它可能看起来像一个副本,因为它是一个映射。