0

我的代码如下所示:

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

问题是CheckBoxFor正在为该字段创建一个隐藏的,但是当检查框时,它仍未将更改的值发送到服务器。即使我取消选中它,我仍然将值设为 true。该字段出现在表单中,我没有使用提交提交,而是序列化(使用 jquery 序列化程序)然后提交。

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

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

4

3 回答 3

0

你可以这样使用

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

我想这会对你有所帮助。

于 2013-01-10T10:47:31.547 回答
0

不幸的是,在某些情况下,无法使用 CheckBoxFor 破解此问题,但您可以这样做:

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

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

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

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

于 2013-01-09T11:58:13.603 回答
0

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

<label>
   <input id="IsEnabled" name="ISEnabled" type="checkbox" value="true" />
       IsEnabled
 </label>
于 2013-01-10T09:17:14.237 回答