私はMVC3のeditorForヘルパーに関して奇妙な問題があります。ここに事があります:私はcheckboxListを表示しようとしています、そして、もし私がテンプレート名を明示的に呼ぶことがなければ動作します。しかし、私はテンプレート名を使用しようとすると、私は単に私のviewModelを渡す必要があるときに私はジェネリックリストを渡そうとしているという例外をスローします。私はそれがより理解しやすくするためにいくつかのコードを紹介します:asp.net-mvc3 Editorテンプレート名の問題
のViewModel
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>
それは私が単純でChkViewModelなくGenericList ChkViewModelを渡すために持っていることを言ってInvalidOperationException
スローします。
私は別のチェックボックスリストを作成しようとしたため、チェックボックスを表示しなくても動作できなかったため、テンプレート名を設定しようとしたときにのみ質問しています。チェックボックスを参照してください、それはそのエラーをスローしました。
なぜテンプレート名を指定しますか? – epzee
最後の段落で言及したように、私はそれを前もって必要としませんでしたが、別の例を作成しようとしたときにうまく動作しませんでした。また、それがパラメータであれば、それを使用しないでください。私が使っているテンプレートを具体的に知っている方が良いのではないでしょうか? – AdrianoRR