@ HTML.CheckBoxFor()不发送未经检查的框的值

时间:2013-01-09 11:55:07

标签: javascript asp.net-mvc

我的代码如下所示:

<div>
 <label>
      @Html.CheckBoxFor(x=>x.IsEnabled)
      IsEnabled</label>     
</div>

问题是CheckBoxFor正在为这些字段创建一个隐藏但仍然在选中此框时它不会将更改后的值发送到服务器。即使我取消选中它,我仍然可以得到真值。此字段显示在表单中,我不是使用提交提交,而是序列化(使用jquery序列化程序)然后提交它。

问题是序列化程序选取每个元素的value属性,并且在切换时不会更改复选框值属性。检查的属性是正在改变的属性。

有什么办法可以解决吗?

3 个答案:

答案 0 :(得分:0)

不幸的是,在某些情况下,没有办法用CheckBoxFor破解它,但你可以这样做:

@Html.CheckBox("IsEnabled", Model.IsEnabled)

相反,它应该更好。 Checkboxfor会在提交表单时创建一些隐藏的变量:

<input name="IsEnabled" type="checkbox" value="true">
<input name="IsEnabled" type="hidden" value="false">

对于jquerish插件,这可能是一个问题。特别是序列化的东西,因为它们可能只是简单的属性映射。

答案 1 :(得分:0)

当我使用普通的Html输入类型按名称绑定模型时。它完美地运作:

<label>
   <input id="IsEnabled" name="ISEnabled" type="checkbox" value="true" />
       IsEnabled
 </label>

答案 2 :(得分:0)

你可以像这样使用

@Html.CheckBoxFor(model => model.Active.Value)

我认为这会对你有帮助。