ASP.NET剃刀实体框架空引用异常
问题描述:
这是导致该问题的代码,它是在视图中:ASP.NET剃刀实体框架空引用异常
@{
if(item.Contract_Type != null)
{
dangerhtml = (item.Contract_Type == "Premium") ? "class=\"warning\"" : "";
}
}
<td @dangerhtml>
@Html.DisplayFor(modelItem => item.Contract_Type)
</td>
此代码是坐在里面的foreach:
@foreach (var item in Model) {
..etc
}
它在if行上抛出一个NullReferenceException。代码工作正常,如果我删除所有上面的,只是做的事:
<td>
@Html.DisplayFor(modelItem => item.Contract_Type)
</td>
但我期待以设置基于任何帮助赞赏的item.Contract_Type
内容单元格的类!
答
我很确定这个项目是空的,正如Luke已经提到的那样,@ Html.DisplayFor只会吞下这个。
你为什么不只是添加以下WHERE子句,以防止空项被处理:
@foreach (var item in Model.Where(i => i != null))
{
..etc
}
或检查Contract_Type防止NullReferenceException异常发生前,你可以空,检查项目:
if(item != null && item.Contract_Type != null)
{
dangerhtml = (item.Contract_Type == "Premium") ? "class=\"warning\"" : "";
}
但也许是最好的办法是,以确保没有空的对象是它传递给视图之前被写入型号收集..
它看起来像对象“item”为null。你能告诉我们你初始化那个对象的位置吗? – Luke 2014-10-12 12:41:33
我已添加到原始帖子 – Trinitrotoluene 2014-10-12 12:46:16
您在视图中添加了“@model IList”吗? (如此处所述:http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor) –
Luke
2014-10-12 12:58:06