2017-02-08 7 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がドロップダウンデータ型から使用する数値と文字列の両方の値を使用して試しました。

すべてのフルーツタイプを表示する以外はif条件を削除すると、すべてが完全に機能します。

提案がありますか?

+0

より良いインテリセンスのために、CurrentPageの代わりに型付きバージョン(Model.Content)を使用するようにしてください。また、ループ内に@ item.GetPropertyValue ( "fruitType")を印刷して、プロパティーfruitTypeに格納されている実際の値を確認してください。 PS:行の@if(@ item.fruitType == "Apple"){アイテムの前に余分な@が1つあります – Eyescream

答えて

0

ため息ちょうど1あまりにも多くの宣言...場合

どちらも判明したり、正しいコードは次のように見えるので、項目参照は、その前に追加@宣言が必要になります。

@{ 
    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> 
関連する問題