如何将数据库中的List转换为viewModel中的List

时间:2018-03-23 17:38:02

标签: c# asp.net-mvc

我有一个名为applicantVm的ViewModel,我正在尝试显示当前已注册的家庭子女列表。我使用存储过程返回列表但是很难将结果转换为ViewModel并显示它。

在我的ViewModel中:

[Display(Name = "Child First Name")]
[Required]
public string  ChildFirstName { get; set; }

[Display(Name = "Child's Date Of Birth")]
public DateTime ChildDateOfBirth { get; set; }

[Required]
public string Grade { get; set; }

[Display(Name = "Grade Entering")]
[Required]
public int SelectedGradeId { get; set; }

public IEnumerable<SelectListItem> Grades { get; set; }

public IEnumerable<StudentVm> Students { get; set; }

在我的控制器中

public ActionResult Application()
{
    var currentUserEmail = User.Identity.Name;
    var familyMembers = _db.sp_ApplicantFamily_SelectFamilyMembers(User.Identity.Name).ToList();

    List<ApplicantVm> applicantVmList = new List<ApplicantVm>();
    ApplicantVm applicantVm = new ApplicantVm();
    foreach (var child in familyMembers)
    {
        //Here is where I get an error
        foreach ( var student in applicantVm.Students)
        {
            student.FirstName = child.FirstName;                    
        }              
    }

    return View();
}

我在applicantvm.student收到错误:

  

对象引用未设置为对象的实例。

如何将所有儿童的属性设置为学生属性?

1 个答案:

答案 0 :(得分:1)

在ViewModel中,你应该做这样的事情;至少。 您缺少的是您无法在任何代码处初始化学生列表。

private List<string> _goodList = new List<string>();
public List<string> GoodOnes
{   
    get
    { return _goodList;}
    set
    {
        _goodList = value;
    }
}

这是一个非常基本的例子,你应该可以将它应用到你的身上。