2017-02-23 42 views
-1

我遇到問題。我試圖添加viewmodel主題到視圖模型對象的ICollection ...Viewmodel中的ICollection導致空引用異常

它給出了一個空引用異常。這是內部的例外。

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

它說,它不能評價異常源....

我有一個視圖模型:

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; } 
} 

被添加到一個實體的ViewModels的集合:

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的肯定認爲是這樣..

我在做什麼錯?

+0

'_model.Jobs'財產之前初始化Jobs屬性必須做'_model.Jobs.Add(_job)'之前被初始化。 – ekad

+0

'ICollection'是一個接口。您需要首先初始化一個'List ',並將其添加到它並將該列表分配給'Jobs'屬性(並且'ICollection'甚至沒有'Add'方法)。但是,爲什麼不把房產列入名單?List ? –

回答

2

你有ClientDetailsViewModel構造函數或使用_model.Jobs.Add(_job);

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

上帝這難倒了我很多年,我知道這很簡單..它現在的作品。 – si2030