Asp.net mvc 3 如何创建自定义mvc html帮助程序以在EditorTemplate中使用?

Asp.net mvc 3 如何创建自定义mvc html帮助程序以在EditorTemplate中使用?,asp.net-mvc-3,razor,html-helper,Asp.net Mvc 3,Razor,Html Helper,我有一个编辑器模板,用于在html表单中显示模型的值进行编辑。在编辑器模板中,我使用一个自定义mvc html帮助程序来显示/呈现一个复选框。我注意到,当我提交表单时,复选框的值没有与其他模型数据一起发送。在检查生成的HTML时,我注意到我使用的内置HTML帮助程序都有一个name属性,该属性的值前面有一个索引值,即 <input name="[0].CompanyName" type="text" value="CompanyName1"> <input name="[1].

我有一个编辑器模板,用于在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">
<input checked="checked" class="yesNoChk" id="IsActive" name="IsActive" type="checkbox" value="Y">

但是我的自定义html帮助程序(复选框)在呈现时没有索引值,即

<input name="[0].CompanyName" type="text" value="CompanyName1">
<input name="[1].CompanyName" type="text" value="CompanyName2">
<input name="[2].CompanyName" type="text" value="CompanyName3">
<input checked="checked" class="yesNoChk" id="IsActive" name="IsActive" type="checkbox" value="Y">

因此,为什么没有将该值传递回我的HttpPost控制器方法。哼!无法知道自定义复选框是否属于任何模型


所以,我的问题是,如何构建一个自定义mvc html帮助程序,该帮助程序在使用编辑器模板时能够识别分配的html元素索引?微软显然明白了这一点,因为所有内置的html助手都可以工作;我的定制版没有。

您是否尝试过查看HtmlHelper的代码?ILSPY在这方面很有帮助!仅供参考,ASP.NET MVC在