2012-02-15 18 views
0

私がしたいのは、アイコンセットを含むdivがありますが、私は行ごとに5つのアイコンを持つ行を作りたいと思います。だから、私はこう書いた。剃刀の構文インラインコード

<div id="icons-list1" class="icons-list"> 
    @{ int catCount = 0; } 
    @foreach (var catItem in Model.Categories) 
    { 
     if (catCount == 0) 
     { 
      <div class="icons-list-row"> 
     } 
     <label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title"> 
      <img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")"> 
      <input name="categories" value="@catItem.Id" type="checkbox" /> 
     </label> 
     catCount++; 
     @if (catCount == 5) 
     { 
      </div> 
      catCount = 0; 
     } 
    } 
</div> 

しかし、私は、foreach文は何の終了ブロックを持っていないと言って、エラーが発生しました。私はすべてを試しましたが、私はそれを機能させることができませんでした。何が悪いの?私はかみそりの構文に新しいです。

ありがとう

答えて

2

この種の問題が発生した場合は、必ずエスケープしてください。あなたのケースでは

は、しかし、実際の問題は、必要に応じていない第2 if文の前@エスケープ文字である:

<div id="icons-list1" class="icons-list"> 
    @{ int catCount = 0; } 
    @foreach (var catItem in Model.Categories) 
    { 
     if (catCount == 0) 
     { 
      @:<div class="icons-list-row"> 
     } 
     <label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title"> 
      <img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")"> 
      <input name="categories" value="@catItem.Id" type="checkbox" /> 
     </label> 
     catCount++; 
     if (catCount == 5) 
     { 
      @:</div> 
      catCount = 0; 
     } 
    } 
</div> 
1

問題は、あなたが行でifを逃れたということであり、

@if (catCount == 5) 

あなたはもうC#のコードをエスケープする必要はありません@foreach {のようなものを持つ行を書くときは、コードブロックを開始します。

ifの前の@を削除すると、エラーが表示されなくなります。

関連する問題