You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MVC模态框切换下拉框时,如何取消模型绑定复选框选中状态?

问题分析与解决方案

核心问题是你用$("#Aid")选中的不是实际的复选框元素。

@Html.EditorFor针对布尔类型的默认模板,会生成一个包含<label>和<input type="checkbox">的外层容器(比如<div>),你传递的@id="Aid"会被应用到这个容器上,而非真正的复选框<input>。因此你修改的是容器的属性,而非复选框本身,自然看不到视觉上的变化。

解决方案

1. 改用Html.CheckBoxFor直接生成复选框

把EditorFor替换成CheckBoxFor,这样能直接生成独立的复选框元素,确保ID正确绑定到<input>上:

<div class="form-group">
    @Html.LabelFor(model => model.FirstAider, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.CheckBoxFor(model => model.FirstAider, new { @class = "form-control", @id = "Aid" })
    </div>
</div>

2. 简化jQuery代码

不需要同时使用prop和removeAttr,对于复选框的状态控制,只用prop("checked", false)就足够(prop负责控制当前DOM状态,attr仅对应初始HTML属性):

$('#BookList').change(function () {
    $("#Aid").prop("checked", false);
});

备选方案(若必须使用EditorFor)

如果坚持使用EditorFor,需要通过容器找到内部的复选框。默认模板下,容器内的复选框name属性是FirstAider,可以用如下选择器:

$('#BookList').change(function () {
    $("#Aid input[name='FirstAider']").prop("checked", false);
});

这样就能准确选中实际的复选框元素,修改状态后视觉会同步更新。


内容的提问来源于stack exchange,提问作者themightyshrub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:03:25