来自viewModel的ICollection在控制器(MVC4)中显示为Null而非Empty

时间:2013-02-10 04:01:51

标签: asp.net-mvc-3 asp.net-mvc-4

我有以下viewModel:

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

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

    }
}

我将此ViewModel用于卡控制器:

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,它似乎与empty不同。我相信我在ViewModel中创建了一个空的ICollection Sides - 为什么它在控制器中为空?

对于某些情况 - 卡片可以有一个或多个侧面。无论何时创建卡,我都会尝试添加Side。

1 个答案:

答案 0 :(得分: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);
    }

}

您的收藏品为空。制作一个并分配给你的道具。