Javascript 使用jquery为值设置MVC复选框
这对于知情者来说是一个简单的问题,然而,通过谷歌搜索和堆栈搜索,我发现并没有直接或直接的答案 我有一个简单的支票箱Javascript 使用jquery为值设置MVC复选框,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,这对于知情者来说是一个简单的问题,然而,通过谷歌搜索和堆栈搜索,我发现并没有直接或直接的答案 我有一个简单的支票箱 @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)"
@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">
结果如下
<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">
正如您所看到的,绑定值没有改变
更新
示例应该有效,请参见例外答案
显然,第二个元素用于绑定
这并非完全正确。@Html.CheckBoxFor()
方法呈现复选框和隐藏输入的原因是未选中的复选框不会回发值。如果未选中该复选框,则会将隐藏的输入值“false”发回。如果选中该复选框,则其“true”值将被发回,隐藏的输入值将被忽略(默认模型绑定器将忽略具有相同名称的后续值)
你可以看到这张照片
因此,您不需要更改隐藏输入的值,这样做可能会导致发回不正确的值。如果为true,此代码会将复选框的选中状态更改为false
if ($("#cbinPro").is(":checked")) {
$("#cbinPro").click();
}
因此,我发布的jquery示例(理论上)应该可以工作吗?是的。您只想更改复选框,而不是隐藏的输入。
if ($("#cbinPro").is(":checked")) {
$("#cbinPro").click();
}