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

How to fix ' Cannot perform runtime binding on a null reference"

我正在处理 MVC 项目,我正在循环一些值,有时其中一些值是空的:

我能写什么,怎么写??运算符或任何情况 @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...

您可以使用空条件,在 C# 6.0 及更高版本中可用:

@item?.User_Class?.ClassTypeName?.Name

对于@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 对象,因为它也可能为空。

(@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>
...
}

语法可能有点不对,但你明白了。