当从控制器ASP MVC中调用类中的内部void函数时,为空引用
本文关键字:void 函数 引用 内部 控制器 ASP MVC 调用 | 更新日期: 2023-09-27 18:05:45
我正在寻找一个救世主来解决我的问题。
我正在尝试遵循这个教程关于嵌套集合:
MVC中的嵌套集合添加多个电话号码
然而,我遇到了一个问题:
internal void CreatePart(int count = 1)
{
for (int i = 0; i < count; i++)
{
Parts.Add(new Part()); // ====>>>>>> it throws null reference
}
}
我找不到null的来源。你能帮我找一下吗?
下面是我的代码:
产品实体
public class Product
{
public int Id { get; set; }
[StringLength(50, MinimumLength = 2)]
public string Name { get; set; }
public virtual ICollection<Part> Parts { get; set; }
public virtual ICollection<Version> Versions { get; set; }
internal void CreatePart(int count = 1)
{
for (int i = 0; i < count; i++)
{
Parts.Add(new Part());
}
}
}
部件实体
public class Part
{
public int Id { get; set; }
[StringLength(50, MinimumLength = 2)]
public string Name { get; set; }
public int ProductId { get; set; }
public virtual Product Product { get; set; }
public string DeletePart { get; set; }
}
创建控制器:
public ActionResult Create()
{
var product = new Product();
product.CreatePart(2);
return View(product);
}
您还没有实际实例化Parts
,所以当您试图向其添加元素时,您会得到一个异常。
如果你看看你链接到的例子,你在Product
类中缺少一个构造函数。
试着把这个添加到你的类中:
public Product()
{
this.Parts = new HashSet<Part>();
}
不完全确定,但是!
改变:
for (int i = 0; i < count; i++)
{
Parts.Add(new Part());
}
:
for (int i = 0; i < count; i++)
{
Part p = new Part();
Parts.Add(p);
}
如果错误现在移动到:
Part p = new Part();
<<
那么我猜问题是如何初始化的。
您可以尝试为Part类定义一个构造函数并给它虚拟值,看看会发生什么。