我正在研究MVC项目,并且正在循环一些值,有时其中一些值是null:
我可以写什么,我怎么写?运算符或任何@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...
答案 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>
...
}
语法可能有点差,但是您明白了。