ASP.NET MVC Core 2.0填充模型内List集合遇初始化问题求助
解决ASP.NET Core MVC中List集合未初始化的错误
嘿,我完全懂你碰到的这个问题!你遇到的是C#里超级常见的NullReferenceException——当你尝试往一个还没被初始化的List<T>集合里添加元素时,就会抛出这个“需初始化对象”的错误。之前处理下拉列表没问题,大概率是因为当时的数据源已经提前被实例化过了,而这次模型里的Chart集合默认是null,所以调用Add方法就炸了。
别担心,解决方法非常简单,这里给你几种常用的方式:
1. 在模型构造函数里自动初始化集合
直接在你的模型类里添加一个构造函数,在里面实例化Chart列表。这样每次创建模型对象的时候,这个集合都会自动变成一个空的List,不会是null:
public class YourModelClass { // 你的Chart集合属性 public List<Chart> Chart { get; set; } // 构造函数初始化集合 public YourModelClass() { Chart = new List<Chart>(); } // 模型里的其他属性... }
2. 在控制器里手动初始化集合
如果不想修改模型的构造函数,那在控制器创建模型实例的时候,先给Chart集合赋值一个新的List,再添加元素:
public IActionResult YourAction() { var model = new YourModelClass(); // 先初始化集合! model.Chart = new List<Chart>(); // 现在就可以正常添加元素了 model.Chart.Add(new Chart { // 给Chart的属性赋值,比如Name = "示例图表", Value = 100 }); return View(model); }
3. 用C# 6+的自动属性初始化(最简洁)
如果你的项目用的是C# 6或更高版本(ASP.NET Core 2.0肯定支持),可以直接在属性定义的时候就初始化集合,一行搞定:
public class YourModelClass { // 直接在属性定义时初始化 public List<Chart> Chart { get; set; } = new List<Chart>(); // 其他属性... }
选其中一种方式都能解决你的问题,推荐第三种,代码最简洁也不容易忘。下次碰到集合操作前,先确认一下集合是不是已经被实例化了,就能避免这个小坑啦!
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

