如何修复'无法对空引用执行运行时绑定”

时间:2018-06-20 14:56:22

标签: c# asp.net-mvc razor view ternary-operator

我正在研究MVC项目,并且正在循环一些值,有时其中一些值是null:

enter image description here

我可以写什么,我怎么写?运算符或任何@Item.User_class.User1.Nickname为null的情况来设置一些默认值。

代码:

@foreach (var item in ViewBag.nextClassesList)
{ 
    <tr class="@item.Status">
        <td>@item.ClassDate</td>
        <td>@item.User_Class.User1.NickName ? @item.User_Class.User.NickName   </td>
        <td>@item.User_Class.ClassType.ClassTypeName.Name (@item.User_Class.ClassType.ClassTypeName.Time min)</td>
    </tr>
}

所以这行是问题:

<td>@item.User_Class.User1.NickName ? @item.User_Class.User.NickName   </td>


<td>@item.User_Class.User1.NickName </td> Is null sometimes...

2 个答案:

答案 0 :(得分:1)

您可以使用null条件(在C#6.0及更高版本中可用):

@item?.User_Class?.ClassTypeName?.Name

答案 1 :(得分:1)

对于@item下作为对象的每个属性,都需要执行空检查,直到简单的属性级别

(@item.User_Class == null) ? string.Empty : (@item.User_Class.User1 == null) ? (@item.User_Class.User == null) ? string.Empty : @item.User_Class.User.NickName :  @item.User_Class.User1.NickName 

您还需要检查User对象,它也可以为null。

(@item.User_Class == null) ? string.Empty : (@item.User_Class.ClassTypeName == null) ? string.Empty : @item.User_Class.ClassTypeName.Name

在您的示例中

@foreach (var item in ViewBag.nextClassesList)
{ 
    <tr class="@item.Status">
        <td>@item.ClassDate</td>
        <td>(@item.User_Class == null) ? string.Empty : (@item.User_Class.User1 == null) ? (@item.User_Class.User == null) ? string.Empty : @item.User_Class.User.NickName :  @item.User_Class.User1.NickName</td>
...
}

语法可能有点差,但是您明白了。