1

我有以下视图模型:

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

在某些情况下 - 一张卡片可以有一个或多个面。每当创建卡片时,我都会尝试添加一面。

4

1 回答 1

0

您需要启动 aCollection并将其分配给对象的属性,如下所示:

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

}

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

于 2013-02-10T04:05:07.353 回答