【问题标题】:Null reference exception error空引用异常错误
【发布时间】:2011-07-27 22:47:55
【问题描述】:

我有一个学生数据模型(实体框架),我将“StudentID”和“StudentName”都设置为主键。 StudentID 是 Int 类型,StudentName 是 String 类型。

我创建了一个强类型视图,但是当我运行它时出现以下错误:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error: 


Line 10:         <tr>
Line 11:             <td>
Line 12:                 <%= Html.Encode(item.StudentID) %>**
Line 13:             </td>
Line 14:             <td>

这是我的控制器操作:

    public ActionResult Index()
    {

        ViewData.Model = student.StudentTable;
        return View();
    }

这里是视图:

    <%@ Page 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<IEnumerable<Student.Models.StudentTable>>" %>

<html>
<head runat="server">
</head>
<body>
    <table>

    <% foreach (var item in Model) { %>

        <tr>
            <td>
                <%= Html.Encode(item.StudentID) %>
            </td>
            <td>
                <%= Html.Encode(item.StudentName) %>
            </td>
        </tr>

    <% } %>

    </table>
</body>
</html>

【问题讨论】:

  • 你能从你的控制器动作方法中显示代码吗?
  • @frennky 我在上面添加了我的观点

标签: asp.net-mvc entity-framework view


【解决方案1】:

没有任何其他信息,我的猜测是itemnull。如果学生表的每条记录都有一个学生 ID,那么您只需传递 model.StudentID

控制器

public ActionResult Index()
{    
    var model = student.StudentTable;
    return View(model);
}

aspx

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.Encode(item.StudentID) %>
        </td>
        <td>
            <%= Html.Encode(item.StudentName) %>
        </td>
    </tr>

<% } %>

【讨论】:

  • 我仍然得到同样的错误,我添加了我的控制器和上面的视图
  • ViewData.Model = student.StudentTable; 上放置一个断点并检查您的任何记录中的StudentID 是否为null。另外,我建议将模型传递给视图,而不是使用 ViewData...return View(model);
  • 是的,StudentID 有几个空值,我已将其设置为身份密钥。我该如何克服呢?此外,当在视图中传递模型时,例如: 它如何在 StudentTable 中获取所有学生,我不需要一个 for 循环吗?
  • 您的循环很好,您的问题在于StudentID 中的null 值。如果它们应该有一个值,那么我建议设置一个值。在我看来,数据库没有正确设置 ID。您是否将其设置为自动增量,或者您是否依赖您的应用程序来设置 ID?
  • 数据库没有设置那个值,它实际上是像“JSmith114”这样的StudentID,因此我有StudentID和StudentName作为主键。如何设置空值?
【解决方案2】:

我怀疑 item 是否为 null,如果它为 null,您将不会进入循环。设置一个断点并检查项目,它可能不是你想象的那样。

【讨论】:

    【解决方案3】:

    如果这是您遇到异常的行,那么您的 item 变量必须为空。您需要仔细查看它是如何填充的 - 如果您的模型为空,那么您应该能够在您的控制器操作上抛出一个调试器并找出它为什么不起作用。

    【讨论】:

    • 是的,就是这样。它适用于我传递参数的其他操作
    【解决方案4】:

    可能是一些事情......

    您是否从 ActionMethod 传递了有效的视图数据? 你在视图上定义了@model 吗?

    假设 student.StudentTable 是具有 StudentID 属性的单个对象,那么您需要将视图代码更改为 Model.StudentID

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 2011-05-16
      • 2017-10-10
      • 2013-09-21
      相关资源
      最近更新 更多