有没有办法以空安全的方式在Razor视图中导航对象图(没有@if
防护块?
例如,我在Index.cshtml
中有以下内容:
@foreach (Store.Models.Product product in @Model)
{
<tr>
<td>@product.Id</td>
<td>@product.ProductName</td>
<td>@String.Format("{0:C}", @product.Price)</td>
<td>@product.Quantity</td>
@if (@product.Category != null)
{
<td>@product.Category.CategoryName</td>
}
else
{
<td></td>
}
</tr>
}
并非所有产品都有类别。如果没有,Product.Category
为空。
我真正想做的是安全地能够导航对象图,而不必担心NullReferenceException
炸毁视图。
在Groovy / Grails中,我习惯使用Safe Navigation Operator并执行以下操作:
<td>@product?.Category?.CategoryName</td>
当然,这在Razor中不起作用。
Razor中是否有任何等效物?
答案 0 :(得分:1)
一种方法是使用内联条件:
<td>@(product.Category != null ? product.Category : "")</td>
让代码更紧凑
答案 1 :(得分:1)
我正在使用此代码,只需用括号@()将代码括起来:
<a class="float-right bg-warning text-dark">
@(order.BilledAmount?.ToString("0,0.00"))
</a>