javascript - 使用 jquery 设置 MVC CheckBoxFor 值

标签 javascript jquery asp.net-mvc

对于知情人士来说,这是一个简单的问题,但是,通过 Google 搜索和 Stack 搜索,我发现没有直接或直截了当的答案。

我有一个简单的 CheckBoxFor

@Html.CheckBoxFor(x => x.Classify)

生成以下 2 个页面元素

<input data-val="true" data-val-required="The Classify field is required." id="Classify" name="Classify" onclick="OnClassifyClick(this)" type="checkbox" value="true" data-bind="checked:Classify">
<input name="Classify" type="hidden" value="false" data-bind="value:Classify">

显然第二个元素用于绑定(bind)<-- 这个假设是不正确的

我如何使用 jquery 来更改这两个值,以便发布的模型将反射(reflect)状态

以下代码仅更改视觉状态而不更改绑定(bind)状态(如果这是正确的术语)<-- 此假设不正确

$("#Classify").attr('checked', true);

结果如下

<input data-val="true" data-val-required="The Classify field is required." id="Classify" name="Classify" onclick="OnClassifyClick(this)" type="checkbox" value="true" data-bind="checked:Classify" checked="checked">
<input name="Classify" type="hidden" value="false" data-bind="value:Classify">

如你所见,绑定(bind)值没有改变

更新

示例应该有效,请参阅异常(exception)答案

最佳答案

Obviously the second element is used for binding

这并不完全正确。 @Html.CheckBoxFor() 方法呈现复选框和隐藏输入的原因是未选中的复选框不会回发值。如果未选中该复选框,则回发隐藏输入的“false”值。如果选中该复选框,则会回发其“真”值并忽略隐藏的输入值(默认模型绑定(bind)器会忽略具有相同名称的后续值)。

你可以看到 source code here .

因此您不需要更改隐藏输入的值,这样做可能会导致回传不正确的值。

关于javascript - 使用 jquery 设置 MVC CheckBoxFor 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688497/

相关文章:

jquery - 安装 jQuery?

javascript - 使用 flask 发送文件并返回数据而不刷新 html 页面

c# - 在 asp.net-mvc 中创建可重用部分的最佳方法

javascript - 如何去除window.find Highlights的backcolor

javascript - 即使在 'end' 事件上指定返回后,NodeJS http.request 也不返回数据

javascript - 如何在更少的 SQL 查询中执行复杂的 API 授权?

javascript - d3.js 通过 dbclick 事件打开新选项卡

jquery - 如何在输入上应用边框?

angularjs - ASP.NET MVC 中的 AngularJS 是否有用于强类型化的功能?

c# - .Net Framework 您必须添加对程序集 mscorlib 的引用,Version=4.0.0.0