如何修复“无法对空引用执行运行时绑定”
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>
...
}
语法可能有点不对,但你明白了。
我正在处理 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>
...
}
语法可能有点不对,但你明白了。