0

任何人都可以提出以下问题的原因吗?我的代码在线中断

integerList.Integers.Add(integer);

带有错误消息

Object reference not set to an instance of an object.

IntegerList.Integers 为空,我怀疑这是原因,但解决方案是什么?初始化变量时是否必须设置 IntegerList.Integers 值,使其永远不会为空?

楷模

public class IntegerList
{
    public int IntegerListID { get; set; }
    public string Direction { get; set; }
    public long Performance { get; set; }
    public virtual ICollection<Integer> Integers { get; set; }
}

public class Integer
{
    public int IntegerID { get; set; }
    public int IntegerValue { get; set; }
    public int IntegerListID { get; set; }
    public virtual IntegerList IntegerList { get; set; }
}

视图模型

public class IntegerViewModel
{
    [UIHint("Integers")]
    public IntegerValueViewModel IntegerValues { get; set; }
    public string Direction { get; set; }
}

public class IntegerValueViewModel
{
    public ICollection<int> IntegerValue { get; set; }
}   

控制器

    [HttpPost]
    public ActionResult Index(IntegerViewModel integerViewModel)
    {
        if (ModelState.IsValid)
        {
            var integerList = new IntegerList
            {
                Direction = integerViewModel.Direction
            };

            foreach (var item in integerViewModel.IntegerValues.IntegerValue)
            {
                var integer = new Integer { IntegerValue = item };
                integerList.Integers.Add(integer);
            }
4

2 回答 2

4

因为该Integers属性未初始化且为空。您试图在给您一个错误的nullAdd事物上调用该方法

解决方案:IntegerList在类构造函数中初始化属性

public class IntegerList
{
    public int IntegerListID { get; set; }
    public string Direction { get; set; }
    public long Performance { get; set; }
    public virtual ICollection<Integer> Integers { get; set; }

    public IntegerList()
    {
      Integers =new List<Integer>();
    }
}
于 2013-10-05T20:46:36.703 回答
0

当你这样做

var integerList = new IntegerList
            {
                Direction = integerViewModel.Direction
            };

关联的 Integers 没有初始化,可以在 IntegerList 构造函数中初始化。或执行以下操作

var integerList = new IntegerList
                {
                    Direction = integerViewModel.Direction,
                    Integers=new List<Integer>()

                };
于 2013-10-05T20:46:49.940 回答