我有一个编辑器模板,用于以 html 表单显示模型的值以进行编辑。在编辑器模板中,我使用了一个显示/呈现复选框的自定义 mvc html 助手。我注意到当我提交表单时,复选框的值没有与模型数据的其余部分一起发送。在检查生成的 HTML 时,我注意到我使用的内置 html 助手都有一个 name 属性,其值前面有一个索引值,即
<input name="[0].CompanyName" type="text" value="CompanyName1">
<input name="[1].CompanyName" type="text" value="CompanyName2">
<input name="[2].CompanyName" type="text" value="CompanyName3">
但是我的自定义 html 助手(复选框)在没有索引值的情况下呈现,即
<input checked="checked" class="yesNoChk" id="IsActive" name="IsActive" type="checkbox" value="Y">
因此,为什么没有将值传递回我的 HttpPost 控制器方法。呸!无法知道自定义复选框属于任何模型。
所以,我的问题是,如何构建一个自定义的 mvc html 助手,它知道使用编辑器模板时分配的 html 元素索引?微软显然明白了这一点,因为所有内置的 html 助手都可以工作。我的自定义没有。