2013-02-10 75 views
1

我有以下視圖模型:ICollection的顯示爲空,並在控制器(MVC4)不是空

namespace Flashcard.Models 
{ 
    public class CreateCardViewModel 
    { 
     [HiddenInput(DisplayValue = false)] 
     public int SetId { get; set; } 

     [Required] 
     public ICollection<Side> Sides { get; set; } 

    } 
} 

我來對付卡控制器此視圖模型:

public class CardController : Controller 
    { 
     // 
     // GET: /Card/ 

     public ActionResult Create(int setId) 
     { 
      var model = new CreateCardViewModel(); 

      var side = new Side() {Content = "Blank Side"}; 


      model.SetId = setId; 
      model.Sides.Add(side); 
      return View(model); 
     } 

    } 

然而,當我調用Create動作,我得到一個nullReferenceException,因爲model.Sides是null,它看起來不像空。我相信我在ViewModel中創建了一個空的ICollection Sides - 爲什麼它在控制器中爲空?

對於某些情況 - 卡可以有一個或幾個邊。每當創建一張卡時,我總是試圖添加一個Side。

回答

0

你需要啓動Collection並如下分配到對象的屬性:

public class CardController : Controller 
{ 
    // 
    // GET: /Card/ 

    public ActionResult Create(int setId) 
    { 
     var model = new CreateCardViewModel(); 

     var side = new Side() {Content = "Blank Side"}; 


     model.SetId = setId; 


     model.Sides = new List<Side>(); 

     model.Sides.Add(side); 
     return View(model); 
    } 

} 

你的集合爲null。製作一個並分配給你的道具。

相關問題