我目前有一个databasemodel学生,例如:
class Student
{
public string fname { get; set; }
public string lname { get; set; }
public string address { get; set; }
}
和编辑
class StudentEditViewModel
{
public StudentEditViewModel(Student s)
{
fname = s.fname;
lname = s.lname;
address = s.address;
}
[Display(Name = "First name")]
[Required(ErrorMessage = "First name is required")]
public string fname { get; set; }
public string lname { get; set; }
public string address { get; set; }
}
在我的完整代码中有更多属性,现在我已经厌倦了输入5次,模型,视图模型属性,VM的初始化,在视图中指定这些东西,再次保存时,将vm转换为模型,然后保存。
由于仍然使用Nhibernate的原因我不能直接使用模型作为viewmodel,但是不是有一种更有效的方式,不是所有类型都必须是5次?
答案 0 :(得分:0)
您可以在ViewModel中存储Student
的本地引用,只需在属性中获取/设置模型。例如:
class StudentEditViewModel
{
private Student mStudentModel;
public StudentEditViewModel(Student s)
{
mStudentModel = s;
}
[Display(Name = "First name")]
[Required(ErrorMessage = "First name is required")]
public string firstname
{
get
{
return mStudentModel.fname;
}
set
{
// Check if changed
if(mStudentModel.fname != value)
{
mStudentModel.fname = value;
// NotifyPropertyChange
}
}
}
// same for other properties
}
否则请使用Automapper作为@abatishchev建议。