Viewmodel中的ICollection导致Null引用异常

时间:2017-02-23 07:23:46

标签: c# asp.net-mvc

我遇到了麻烦。我正在尝试将viewmodel对象添加到viewolodel对象的ICollection ...

它给出了一个空引用异常。这是内在的例外。

  System.NullReferenceException occurred
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=<Cannot evaluate the exception source>

它说无法评估异常来源......

我有一个viewmodel:

    public class ClientJobListingViewModel
{
    public int Id { get; set; }
    public string JobType { get; set; }
    public string Status { get; set; }
    public string WarrantyStatus { get; set; }
    public string NumberOfVisits { get; set; }
}

作为viewmodel的集合添加到实体中:

public class ClientDetailsViewModel
{
    ...
    public ICollection<ClientJobListingViewModel> Jobs { get; set; }
}

我正在使用foreach循环创建viewmodel,然后将其添加到集合中......简单。

if (_client.Jobs.Count() > 0)
{
     foreach (Job job in _client.Jobs)
     {
          var _job = new ClientJobListingViewModel();

          _job.JobType = "test1";
          _job.Status = "test2";
          _job.WarrantyStatus = "test3";
          _job.NumberOfVisits = "4";

          _model.Jobs.Add(_job);
          }
     }
....

然而,当我运行这个时,我得到一个空引用异常错误..

Showing that the view model is not null.

看起来我已正确编码,但也许我错过了一些东西...... Visual Studio当然是这么认为的。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您必须在Jobs构造函数中或在使用ClientDetailsViewModel之前初始化_model.Jobs.Add(_job);属性

 public class ClientDetailsViewModel
{
    public ClientDetailsViewModel()
    {
        Jobs = new List<ClientJobListingViewModel>();
    }
    public ICollection<ClientJobListingViewModel> Jobs { get; set; }
}