私は、問題なく動作する次のコード行を持つ MVC3 プロジェクトを持っています。
@if (this.Model.ShowAddButton)
{
@this.Html.ActionLink("Add", "Add")
}
私たちのチームには、すべてのローカル メソッド呼び出しに接頭辞 を付ける必要があるというコーディング ガイドラインがありますthis
。これは、今まで MVC3 で問題なく機能していました。
hereのガイダンスを使用して、プロジェクトを MVC4 に手動でアップグレードしました。上記のコードは、次のメッセージでエラーになります。
Unexpected "this" keyword after "@" character. Once inside code, you do not need to prefix constructs like "this" with "@".
エラーメッセージは誤解を招くと思います。これは、これを行うことが合法であることを意味しますが、必須ではありません。コーディング ガイドラインを遵守する必要がないことはわかっていますが、意図的にこれを行っています。パーサーが失敗したという事実、メッセージは、ネストされたコードブロックでOnce inside code, you cannot prefix....
使用できないことを理解していることを示しているはずであり、問題は記号ではなく. ステートメントに追加しても呼び出しの結果には影響しないため、例外がスローされる理由がわかりません。削除することで問題を解決できます:@
@
this
this
this
@if (this.Model.ShowAddButton)
{
@Html.ActionLink("Add", "Add")
}
ただし、これを行うと、コーディング ガイドラインに抵触します。私の質問は、これは MVC4 で意図的に変更されたものですか (MVC3 では問題なく機能したため)。それとも、これは MVC4 のバグですか? if
ブロックを解除しても、this
キーワードは引き続き使用できます。
@this.Html.ActionLink("Add", "Add")