2013-04-01 40 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行。謝謝! –