ASP.NET Razor实体框架Null引用异常

本文关键字:Null 引用 异常 框架 实体 NET Razor ASP | 更新日期: 2023-09-27 18:26:23

这是导致问题的代码,它在视图中:

@{
    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>

但我希望根据项目的内容为单元格设置类。合同类型

感谢您的帮助!

ASP.NET Razor实体框架Null引用异常

正如Luke已经提到的,我很确定该项为null,@Html.DisplayFor会接受这一点。

为什么不添加以下where子句来防止处理空项目呢:

@foreach (var item in Model.Where(i => i != null))
{
  ..etc
}

或者,您可以在检查Contract_Type之前对项目进行null检查,以防止出现NullReferenceException:

if(item != null && item.Contract_Type != null)
{
  dangerhtml = (item.Contract_Type == "Premium") ? "class='"warning'"" : "";
}

但是,最好的方法可能是确保在将null对象传递给视图之前,不会将其写入Model集合。。