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')
我的表单上有以下布尔值:
<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')