次のステートメントを使用しようとしました:
@Html.Test<ISQL>().Nand()
ただし、RazorはISQLの前の<で窒息しています。
公式の回避策はありますか?
ジェネリックメソッドを使用するには、式をエスケープする必要があります
@(Html.Test<ISQL>().Nand())
Mvcをアップグレードするときにこの「同じエラー」を探していたときに、この質問を見つけました。
私が持っていた:
機能しません:
@{
ViewBag.Title = "Something " + @Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
どうやら、構文はより厳密になり、@ {}ブロック内にいるため、例のModel.Titleの前に@を追加しないでください。しかし、コードエディターのエラーはジェネリックを指していて、それは私を夢中にさせていました。
コード内に<>がない場合は問題なく動作しますが、Model.Titleから@を削除するだけで問題が解決します。
作品:
@{
ViewBag.Title = "Something " + Model.Title;
var something = (IEnumerable<SelectListItem>)ViewBag.Options;
}
これが誰にも役立つことを願っています
この「回答」はやや遅れており、質問への回答は明らかに満足のいくものになっています。ただし、このページへの今後の訪問者のために、より完全なリファレンスガイドが必要な場合は、Razor構文の MSの紹介 とPhil Haackの非常に便利 Razorクイックリファレンス ブログ投稿。
1つの内部に複数の割り当てがあると、奇妙なケースが発生しました@{ ... }
ボック。
@{
// ... other assignments (without error)
List<string> stringList = new List<string>() // ERROR MESSAGE HERE
}
私がしたことは何でも、常に次のようなエラーがありました:
ジェネリック型 'List'を使用するには、型引数が1つ必要です
ソリューション:割り当て行をsecond@{ ... }
bock。
@{
// ... other assignments
}
@{
List<string> stringList = new List<string>() // WORKS
}
@文字についてです。この例はアップグレード前に機能します
@{
string @class = ViewBag.@class;
IDictionary<string, object> htmlAttributes = new Dictionary<string, object>();
}
アップグレード後、2つのブロックに分割する必要があります
@{ string @class = ViewBag.@class; }
@{ IDictionary<string, object> attrs = new Dictionary<string, object>(); }