我正在为这个问题寻找救星。
我正在尝试按照本教程关于嵌套集合:
Nested collection in MVC add multiple phone number
然而,我遇到了一个问题:
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);
}
答案 0 :(得分:3)
您实际上没有实例化Parts
,因此在尝试向其添加元素时会出现异常。
如果您查看链接到的示例,则错过了Product
类中的构造函数。
尝试将此添加到您的班级:
public Product()
{
this.Parts = new HashSet<Part>();
}
答案 1 :(得分:0)
对此不完全确定,但是!
改变这个:
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();
&lt;&lt;这里
然后我猜问题是它是如何初始化的。
你能尝试为Part类定义一个构造函数,并给它赋值,看看会发生什么。