MVC bool EditorFor 值在 JQUERY 中始终为真

MVC bool EditorFor value always true in JQUERY

我的表单上有以下布尔值:

<div class="form-group">
    @Html.LabelFor(model => model.IsMonday, "Monday", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.IsMonday)
        @Html.ValidationMessageFor(model => model.IsMonday)
    </div>
</div>

呈现如下:

<div class="form-group">
            <label class="control-label col-md-2" for="IsMonday">Monday</label>
            <div class="col-md-10">
                <input class="check-box" data-val="true" data-val-required="The IsMonday field is required." id="IsMonday" name="IsMonday" type="checkbox" value="true" />
                <input name="IsMonday" type="hidden" value="false" />
                <span class="field-validation-valid" data-valmsg-for="IsMonday" data-valmsg-replace="true"></span>
            </div>
        </div>

无论我是否选中该框,在 Chrome 开发工具中,以下结果为真:

$('#IsMonday').val()

为什么会这样,我如何才能知道该框是否被选中,即 true 或 false,而不仅仅是 true。

如果有人推荐这个问题,这个问题对我没有帮助:

MVC 4 EditorFor bool Checkbox always posting True

从字面上看,我在发布此消息的那一刻就找到了解决方案,从 JQUERY 1.6 开始,attr() 方法 returns 未定义,这是我尝试过的另一件事,它有效:

$('#IsMonday').prop('checked')

也许它会对其他人有所帮助。

它总是 returns true 的原因是因为 @Html.CheckBoxFor() 呈现 2 个输入

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

用于绑定(未选中的复选框不会 post 返回,因此隐藏输入确保 false 的值被 posted)。要检查其状态,您可以使用

$('#IsMonday').is(':checked')