我有一个学生数据模型(实体框架),我将“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>
答案 0 :(得分:1)
如果没有任何其他信息,我的猜测是item
是null
。如果学生表每个记录有一个SINGLE学生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>
<% } %>
答案 1 :(得分:1)
我怀疑item是null,如果它是null,你就不会进入循环。设置一个断点并检查项目,它可能不是你想象的那样。
答案 2 :(得分:0)
如果这是您获得例外的行,则您的item
变量必须为null。你需要仔细研究它是如何被填充的 - 如果你的模型为null,那么你应该能够在你的控制器动作上抛出一个调试器并弄清楚为什么它不起作用。
答案 3 :(得分:0)
可能是一些事情......
您是否从ActionMethod传递了有效的视图数据? 你有没有在视图上定义@model?
假设student.StudentTable是具有StudentID属性的单个对象,那么您需要将视图代码更改为Model.StudentID