2011-01-28 21 views
8

MVC3のRazor構文を使用して非常に単純なビューを作成しようとしていますが、構文を正しく取得できないようです。MVC3 Razor Syntax trouble

私が挿入し、if文の内側に、私が使用してブロックを閉じる「}」の文字が欠落しています。このエラーに

を受信したとき、私はこの

<table> 
       <tr> 
        @{ 
         var counter = 0; 
        } 

        @foreach (var category in ViewBag.Categories) 
        { 
         counter++; 
         <td> 
          <input type="checkbox" checked="checked" name="@("category" + category.Code)" /> 
          @category.Description 
         </td> 

         if (counter % 2 == 0) 
         { 
          </tr> 
          <tr> 
         } 
        } 
       </tr> 
      </table> 

のような単純なテーブルを持っています。

私は内部でこれら二つのタグをラップしようとすると、私の代わりにこのエラーが出た場合:

「TR」要素が閉じられていませんでした。

答えて

14

あなたの</tr><tr>は、HTML /コードミックスの「流れ」を混乱させます。

trタグをHTML内の異なるレベルではなく、コード内で別のレベルで閉じています。あなたはhtmlを出力するためにかみそりを欺くべきです、それはそれ自身を解析しません。

あなたは、このようにそれらを含めることができます

@:</tr><tr> 

または

@Html.Raw("</tr><tr>") 

結果:あなたがミックスインされているハークのquick reference of Razor syntax

+1

+1 Philsのクイックリファレンス以外に、完全なリファレンスを用意したいと思います。 –

+0

@マーティン:ああ、あまりにも。構文は本当に簡単で使いやすいですが。 – GvS

+2

これはコミュニティウィキのためのものかどうか疑問に思っていますか?私は本当にそれを使用することができます。かみそりの構文が非常にきれいであっても、時にはそれが私の脳を乱す;) –

3

if文の前に@がありません。試してください@if(counter % 2 == 0)

希望に役立ちます。

更新

私はそれをチェックアウトしGvSからの答えはうまく動作するようです。 if文には@は必要ありません。

@for (int i = 0; i < 5; i++) 
{ 
    if (i == 3) 
    { 
     @:</tr><tr> 
    } 
} 
+0

はなぜ?彼はタグで囲まれていないRazorコードブロックの中に直接あります。 'if'は@ – GvS

+0

なしで動作するはずです。内容が混在しているからです。 – jgauffin

+0

@GvS:私はそれをチェックし、あなたは正しいです。 '@:'は正常に動作します。 –

0

ため

     if (counter % 2 == 0) 
         { 
          @:</tr><tr> 
         } 

クリックg foreach内のHTMLとコード。だからこそあなたは問題を抱えています。

HTML周り<text></text>ブロックを使用するか、次の操作を行います次のいずれかの

<table> 
    <tr> 
     @{ 
      var counter = 0; 
     } 

     @foreach (var category in ViewBag.Categories) 
     { 
      @{ 
       counter++; 
      } 

      <td> 
       <input type="checkbox" checked="checked" name="@("category" + category.Code)" /> 
       @category.Description 
      </td> 

      @if (counter % 2 == 0) 
      { 
       </tr> 
       <tr> 
      } 
     } 
    </tr> 
</table> 
関連する問題