轻松绑定模型到viewmodel

时间:2015-03-23 17:15:34

标签: c# asp.net-mvc razor model-binding

我目前有一个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次?

1 个答案:

答案 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建议。