关于模型的MVC空引用

时间:2015-07-23 15:08:09

标签: asp.net-mvc-3

我试图实现部分视图,但我遇到了模型问题。我收到以下错误:

System.NullReferenceException: object reference not set to an instance of an object

检测到错误的HTML代码如下:

@model IEnumerable<BUGTRACKER.Models.Revisiones>


<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Version)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Descripción)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Fecha)
    </th>
    <th></th>
</tr>

@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Version)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Descripción)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Fecha)
        </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>
}

我真的不知道这里发生了什么,有什么想法吗?

编辑:这是我的行动

public ActionResult _Index()
{
    return PartialView(db.Revisiones.ToList());
}

3 个答案:

答案 0 :(得分:0)

@levelnis方法做到了!

Try using Html.Action instead of Html.Partial to render the partial.

这对我有用。

答案 1 :(得分:0)

您将从Viewmodel返回List<BugTracker.Models.Revisiones>列表,并且视图中的Model类型也是正确的。

但是您正在尝试访问ViewModel中而不是List迭代器中的属性。

版本,说明和Fecha都不属于我想的BugTracker.Models.Revisiones类。

解决方案是从ViewModel返回RevisonesViewModel


    public ActionResult _Index()
    {
        return PartialView(object of RevisonesViewModel);
    }

代替


    public ActionResult _Index()
    {
        return PartialView(db.Revisiones.ToList());
    }

答案 2 :(得分:-2)

你的模型是BUGTRACKER.Models.Revisiones

的IEnnumerable

当你迭代它时没关系,因为它是一个列表。

然而,你不能这样做:model.Version ,因为它在你的模型中不存在。 你需要的是一个封装你的属性的模型和一个BUGTRACKER.Models.Revisiones列表。

Public Class RevisonesViewModel{
      public string Version{ get; set; }
      public string Fetch{ get; set; }
      public string Description{ get; set; }
      public IEnumerable<BUGTRACKER.Models.Revisiones> MyRevisiones
}