剃刀安全导航操作员



是否有一种方法可以在剃刀视图中以空安全的方式导航对象图(没有@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中,我习惯使用安全导航操作符,并会这样做:

<td>@product?.Category?.CategoryName</td>

当然,这在Razor中不起作用。

在Razor中有类似的吗?

一种方法是使用内联条件:

<td>@(product.Category != null ? product.Category : "")</td>

使代码更紧凑

我使用这个,只是用括号@()包围代码:

<a class="float-right bg-warning text-dark">
    @(order.BilledAmount?.ToString("0,0.00"))
</a>

最新更新