有人可以提出以下问题的原因吗?我的代码正在破线
integerList.Integers.Add(integer);
带有错误消息
Object reference not set to an instance of an object.
IntegerList.Integers为null,我怀疑是原因,但解决方案是什么?我初始化变量时是否必须设置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);
}
答案 0 :(得分:4)
因为Integers
属性未初始化且为null。您试图在 null 上调用Add
方法,这会给您一个错误
解决方案:在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>();
}
}
答案 1 :(得分:0)
当你这样做时
var integerList = new IntegerList
{
Direction = integerViewModel.Direction
};
关联的Integers未初始化,您可以在IntegerList contsctructor中初始化它。或者执行以下操作
var integerList = new IntegerList
{
Direction = integerViewModel.Direction,
Integers=new List<Integer>()
};