厳密に型指定された Razor 2 エディター テンプレートがあります。ビューモデルが特定の条件を満たす場合、ビューを同じタイプの代替テンプレートにデリゲートしたい。別のテンプレートを選択するには、EditorFor ヘルパーに TemplateName 引数を使用します。
@model MyType
@if (Model.IsSpecialCase)
{
@Html.EditorFor(m => m, "SpecialCaseTemplate")
}
else
{
@* Default markup *@
}
問題は、Razor が代替テンプレートを呼び出さないことです。EditorFor メソッドを渡すだけです。2 番目のテンプレートのタイプを変更すると、正しく表示されます。部分ビューを使用してこれを回避することはできますが、固執したいエディター テンプレートを使用するスキームがあるため、むしろそうしたくありません。
これを機能させる方法を知っている人はいますか?
編集
これは、 ASP.net MVC - 同じモデル タイプで EditorFor を 2 回使用するという動作と関係があるようです。つまり、MVC は、同じオブジェクトでの EditorFor メソッドの 2 回の使用をサポートしていません。