我对来自 MVC3 的 editorFor 助手有一个奇怪的问题。事情是这样的:我正在尝试显示一个 checkboxList,如果我不明确地调用模板名称,它就可以工作。但是,如果我尝试使用模板名称,它会抛出一个异常,说我正在尝试传递一个通用列表,而我应该简单地传递我的 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>
它抛出了InvalidOperationException
我必须传递一个简单的 ChkViewModel 而不是 GenericList ChkViewModel 的说法。
我只是问这个,因为我试图创建另一个复选框列表但我无法使其工作(甚至不显示复选框)并且当我尝试设置模板名称时,我至少可以看到复选框,它抛出了那个错误。