@HTML.CheckBoxFor()不返回未选中框的值

@HTML.CheckBoxFor() is not sending back value of unchecked boxes

本文关键字:返回 CheckBoxFor @HTML      更新时间:2023-09-26

代码如下:

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

问题是CheckBoxFor正在为这个字段创建一个隐藏,但是当框被选中时,它仍然没有将更改的值发送到服务器。即使取消勾选,我仍然会得到值为真。这个字段出现在一个表单中,我不是使用submit提交,而是序列化(使用jquery序列化器)然后提交。

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

有什么办法可以解决它吗?

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

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

相反,它应该工作得更好。Checkboxfor创建了一些隐藏变量,在提交表单时使用这些变量进行操作:

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

对于jquerish插件来说这可能是一个问题。尤其是那些序列化的东西,因为它们可能只做简单的属性映射。

当我使用普通Html输入类型按名称绑定模型时。

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

可以这样使用

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

我想这会对你有帮助。