我在MVC中有一个基本视图,它将列出我的所有属性。属性模型以这种方式编码:
public class Property
{
public int Id { get; set; }
[Display(Name = "Type")]
public PropertyType Type { get; set; }
[Display(Name = "Address")]
public Address Address { get; set; }
[Display(Name = "Area")]
[Required(ErrorMessage = "A property area is required.")]
public double Area { get; set; }
}
基本上我有两个外键:类型和地址。我已经能够将一些信息插入数据库,如下所示:
所以数据库包含了这些信息,但每当我调用Index视图列出所有属性时,我都会得到一个NullReferenceException。
@foreach (var item in Model) {
<tr>
<td>
@Html.Display(item.Type.Id.ToString())
</td>
<td>
@Html.Display(item.Address.Id.ToString())
</td>
<td>
@Html.DisplayFor(modelItem => item.Area)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
编辑:空值来自Controller类,就像这样:
public ActionResult Index()
{
return View(db.Properties.ToList());
}
我该怎么办?
答案 0 :(得分:4)
如果您使用EF,则需要使用以下内容包含导航属性:
db.Properties.Include(i => i.Address).Include(i => i.Type).ToList()
这将使内部联接和您的属性填充。
有关详细信息,请参阅docs。
答案 1 :(得分:1)
@Html.DisplayFor(modelItem => item.Area)
我想这是抛出错误的那一行。
拿出来看看是否仍然出现错误。