2013-04-01 36 views
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为null。

我真的很想做的是安全能够浏览的对象图,而不必担心NullReferenceException吹起来的观点。

在Groovy/Grails的,我习惯了使用Safe Navigation Operator,并会做这样的事情:

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

当然,这并不在剃刀工作。

剃须刀有什么等价物吗?

回答

1

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

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

只是使代码更紧凑

+0

这工作,并且它变成8行代码为1行。谢谢! –