试图显示物品时获得空引用

试图显示物品时获得空引用

我在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; }

}


基本上,我有两个外键:Type和Address。我已经能够将一些信息插入数据库,如下所示:

c# -  Razor 试图显示物品时获得空引用-LMLPHP

因此数据库包含该信息,但是每次我调用索引视图列出所有属性时,都会得到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>


编辑:null值来自Controller类,就像这样:

    public ActionResult Index()
    {
        return View(db.Properties.ToList());
    }


c# -  Razor 试图显示物品时获得空引用-LMLPHP

我能做什么?

最佳答案

如果您使用的是EF,则需要使用以下方法添加导航属性:

db.Properties.Include(i => i.Address).Include(i => i.Type).ToList()


这将进行内部联接,并且应填充您的属性。

有关更多信息,请阅读一些docs

关于c# - Razor 试图显示物品时获得空引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33587077/

10-10 21:55