26

部分ビュー内に次のコードがあります。

@if (Request.IsAuthenticated)
{
    Hello, @Html.ActionLink(User.Identity.Name, "ChangePassword", "Account") | Html.ActionLink("Log off", "LogOff", "Account")
}
else
{
    @Html.ActionLink("Log in", "Login", "Account")
}

期待される出力 (アクションへの適切なリンク付き):

  • ログインしている場合: Hello Jim | ログオフ
  • ログインしていない場合:ログイン

ただし、これによりエラーが発生します。

  • VS内では、「Hello」という単語にエラーがあります:「シンボル「Hello」を解決できません」および「&#」には「式が必要です」
  • ブラウザで「CS1040: プリプロセッサ ディレクティブは、行の最初の非空白文字として表示する必要があります」というメッセージが表示されます。

<p>...</p>「Hello」で始まる行を囲むと、エラーはなくなります。

@Html同じ行内に呼び出しとテキストを混在させると、明らかに構文エラーがあります。これを行う正しい方法は何ですか?

4

1 に答える 1

70

コード ブロック ( { ... }) の内容は、マークアップではなくコードであると想定されています。

テキストをコード ブロックに直接配置する場合は、次の 3 つの選択肢があります。

  • 任意の HTML タグでラップする
  • タグなしでテキストをレンダリングする特別な Razor<text>タグでラップします。
  • 行の先頭に を追加します@:。これは同等です

SottGu のブログ投稿を参照してください。

于 2012-04-18T13:06:18.450 に答える