0

http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3razor.aspx

上記のリンクで....

コードブロック Foreach

@{
    <h3>Team Members</h3> string[] teamMembers = {"Matt", "Joanne", "Robert", "Nancy"};
    foreach (var person in teamMembers)
    {
        <p>@person</p>
    }
  }

h3 タグ「チーム メンバー」が宣言されていないという C# エラーをスローしないのはなぜですか? これは、C# コードであるというコード ブロック内にあります。すべての HTML タグはコード ブロック内で無視されますか?

同様に、@person に @ サインインするのはなぜですか? このコードもコードブロック内にあるのではないでしょうか? ありがとう、スミス

4

1 に答える 1

2

@ 記号は Razor 構文の中心であり、Razor がコードとマークアップを区別するために使用する文字です。@ 記号は、開発者がマークアップからコードに切り替えるポイントを示します。単純なケースでは、コードがいつ停止してマークアップが再開されるかを示すために追加の文字は必要ありません。Razor のインテリジェント パーサーは、テンプレートのどの部分がコードで、どの部分がマークアップであるかを判断します。有効なコード ステートメントとは何ですか? Razor は、@ シンボル トリガーを読み取ると、次のアルゴリズムを使用してコード ステートメントの末尾を検出します。

  1. 有効な識別子 (つまり、C# または VB のキーワード) または変数名の最後まで読み取ります。
  2. 次の文字が開き括弧 ( ( または [ ) の場合…</p>

    を。対応する閉じ括弧が見つかるまで解析を続けます。ネストされたブラケットも追跡され、ブロックの早期終了を回避します。

    b. #2 に戻ります。

  3. 次の文字が . (ピリオド) が有効な識別子の前にある場合、#1 にジャンプします。
  4. コード ステートメントを完成させ、残りのマークアップの処理を続行します。

@person が存在する理由は、マークアップとコードの間の遷移であることを Razor ビュー エンジンに伝えるためです。

于 2012-12-04T23:44:08.177 に答える