2

有没有办法以空安全的方式在 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 中是否有任何等价物?

4

2 回答 2

1

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

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

只是让代码更紧凑

于 2013-04-01T18:37:06.860 回答
1

我正在使用这个,只需将代码用括号 @( ) 括起来:

<a class="float-right bg-warning text-dark">
    @(order.BilledAmount?.ToString("0,0.00"))
</a>
于 2018-11-21T20:25:45.633 回答