MVC3 の editorFor ヘルパーに関して奇妙な問題が発生しています。これが問題です:私はcheckboxListを表示しようとしていますが、明示的にテンプレート名を呼び出さないと機能します。ただし、テンプレート名を使用しようとすると、単にビューモデルを渡す必要があるのに汎用リストを渡そうとしていることを示す例外がスローされます。わかりやすくするために、いくつかのコードを示します。
ビューモデル
public class ChkViewModel
{
public string ContractName {get;set;}
public string Contract {get;set;}
public bool Checked {get;set;}
}
EditorFor テンプレート (ContractTemplate と呼ばれます)
@model Models.ChkViewModel
<p>
@Html.HiddenFor(x => x.Contract )
@Html.LabelFor(x => x.ContractName , Model.ContractName )
@Html.CheckBoxFor(x => x.Checked, new { @class = "chkContract" })
</p>
私の見解からの抜粋
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList)
</div>
これはうまくいきます。しかし、これをやろうとします:
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList, "ContractTemplate")
</div>
InvalidOperationException
GenericList ChkViewModelではなく、単純なChkViewModelを渡す必要があるということわざがスローされます。
別のチェックボックスリストを作成しようとしたのですが、それを機能させることができず (チェックボックスを表示することさえできませんでした)、テンプレート名を設定しようとしたときに、少なくともチェックボックスを表示できるようにしたためです。そのエラーをスローしました。