我有一个视图,显示一些图像复选框,允许用户决定是否保存每个图像。我隐藏了复选框,而是使用图像顶部的复选标记或X来表示它是否被选中。这一切工作正常。但是,复选框的值不会更改 - 它始终保持未选中状态。MVC 3选择和取消选择使用jQuery的复选框
这里是我的视图代码:
<div class="imgCheckBoxes">
<label for="MyImages_Cover" class="imgCheckBox">
<img src="http://example.com/image.jpg" alt="cover" />
</label>
@Html.CheckBoxFor(m => m.MyImages.Cover, new { @class = "check-box hideChkBx chkForImg" })
</div>
这使得下面的HTML:
<div class="imgCheckBoxes">
<label for="MyImages_Cover" class="imgCheckBox">
<img src="http://example.com/image.jpg" alt="cover" />
</label>
<input class="check-box hideChkBx chkForImg" id="MyImages_Cover"
name="MyImages.Cover" type="checkbox" value="true" />
<input name="MyImages.Cover" type="hidden" value="false" />
</div>
我的jQuery代码如下(删除了一些代码处理定位等):
var closeBtn = '../Content/img/close.png';
var okBtn = '../Content/img/ok.png';
$(document).ready(function (e) {
if ($('.imgCheckBox').html() != null && $('.imgCheckBox').html() != '') {
initializeOkCloseImg();
}
$('.chkForImg').change(function (e) {
initializeOkCloseImg();
});
});
function initializeOkCloseImg() {
var chkImg = '';
$('.chkForImg').each(function (index, element) {
chkImg = closeBtn;
if ($(this).is(':checked')) {
chkImg = okBtn;
}
});
}
一切工作正常在切换图像表示检查/ unc hecked,但是当表单发布时,复选框始终为false。我在这里错过了什么?
在表单发布的控制器操作中,值被保存到数据库中,然后用户被重定向到GET操作,该操作将检索模型并将其返回给视图。我的控制器动作和一切工作正常,因为其他信息正在保存并正确显示,其jQuery似乎是问题。 – HTX9