最近、自分のWebサイトをASP.NET MVC3(Razor)からMVC4(Razor2)にアップグレードしましたが、そうすることで、Razorビューエンジンに重大な変更のように見えるものが見つかりました。
シナリオ(大幅に簡略化)を以下に示します。
@model IEnumerable<string>
@{ Layout = null; }
<!DOCTYPE html>
<html>
<body>
<div>
@foreach (var x in Model)
{
@string.Format("Foo bar: {0}", x) // Errors in MVC4/Razor2
}
</div>
</body>
</html>
これはMVC3/Razorで正常に機能しますが、MVC4/Razor2では次string.Format
のエラーが発生します。
「@」文字の後に予期しない「string」キーワードがあります。コード内に入ると、「string」のような構造の前に「@」を付ける必要はありません。
を削除すると、ビューエンジンは、行をセミコロンで@
終了するように要求します。string.Format
ただし、ReSharperは次のように警告します(当然そうです)。
純粋メソッドの戻り値は使用されません。
これについて私が見つけた2つの修正は、次のいずれかを使用すること<text>
です。
<text>@string.Format("The value {0}", x)</text>
または、以下を使用したより奇妙なアプローチ@:@
:
@:@string.Format("The value {0}", x)
これは、Razorビューエンジンの既知の文書化された変更ですか?