2017-02-08 68 views
0

我有從當前頁面的子項生成的選擇。在該選擇內(我們稱之爲水果),我有項目,每個項目都有一個水果類型。Umbraco&Razor。按下拉列表選擇篩選器

此代碼不起作用:

@{ 
    var selection = CurrentPage.Children("fruit").Where("Visible"); 
} 
<ul> 
    @foreach(var item in selection){ 
     @if(@item.fruitType == "Apple"){ 
     <li> 
      <a href="@item.Url">@item.Name</a><br/> 
      @item.fruitName<br> 
      @item.fruitType<br> 
      @if (item.image != null && !(item.image is Umbraco.Core.Dynamics.DynamicNull)) 
         { var m = Umbraco.Media(item.image); 
          <img src="@m.Url" alt="Picture of @item.Name" /> 
         } 
     </li> 
     } 
    } 
</ul> 

我試圖做的是隻列出與「蘋果」的fruitType的項目。該值是從「fruitType」下拉列表中選擇的,我嘗試過使用Umbraco從Dropdown數據類型中使用的數字和字符串值。

如果我刪除if條件,除了顯示所有水果類型,它都可以很好地工作。

有什麼建議嗎?

+0

嘗試使用打字版本(Model.Content)而不是CurrentPage來獲得更好的智能感知。另請嘗試在循環內打印@ item.GetPropertyValue (「fruitType」)以查看存儲在屬性fruitType中的實際值。 PS:在@if行(@ item.fruitType ==「Apple」){你在item之前有一個額外的@ – Eyescream

回答

0

嘆息只是一個聲明太多..

原來既不是如果也不項目引用需要在它前面附加@聲明,使正確的代碼如下所示:

@{ 
    var selection = CurrentPage.Children("fruit").Where("Visible"); 
} 
<ul> 
    @foreach(var item in selection){ 
     if(item.fruitType == "Apple"){ 
     <li> 
      <a href="@item.Url">@item.Name</a><br/> 
      @item.fruitName<br> 
      @item.fruitType<br> 
      @if (item.image != null && !(item.image is Umbraco.Core.Dynamics.DynamicNull)) 
         { var m = Umbraco.Media(item.image); 
          <img src="@m.Url" alt="Picture of @item.Name" /> 
         } 
     </li> 
     } 
    } 
</ul>