【发布时间】:2016-11-15 07:18:53
【问题描述】:
在我的应用程序中,我有一个 ajax beginform:
@using (Ajax.BeginForm("DeletePages", "Home", new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccessDelete", OnFailure = "OnFailureDelete" }, new { id = "ToolBarActionsForm" }))
{
@Html.AntiForgeryToken()
<div class="col-xs-2 list-group icon-bar">
<a class="list-group-item delete" href="#" title="Delete selected page(s)" data-tool="Delete"><i class="fa fa-2x fa-trash" aria-hidden="true"></i></a>
</div>
<div class="col-xs-10 thumbnailArea">
</div>
}
$(".delete").on("click", function () {
$("#ToolBarActionsForm").submit();
});
此表单将部分视图返回到 thumbnailArea,其中包含一些数据和复选框:
@model List<Doc>
@for (int i = 0; i < Model.Count; i++ )
{
<div class="thumbnailItem">
<div class="imageTitle">
@fileName
@Html.HiddenFor(f => Model[i].FileName)
<button class="btn btn-default pull-right" id="selectAll">Select All</button>
</div>
<ul class="thumbnails row">
@for(int p = 0; p < Model[i].DocPages.Count; p++)
{
<li class="col-xs-2">
<label class="control control--checkbox">
@Html.CheckBoxFor(pg => Model[i].DocPages[p].PageCheck)
<div class="control__indicator">
</div>
</label>
</li>
//more code here
}
</ul>
</div>
}
还有我的 onSuccessDelete 函数:
function OnSuccessDelete(response) {
var checkboxes = $(response).find('input[type="checkbox"]');
$.each(checkboxes, function (i, val) {
val.checked = false;
});
//console.log(response);
$('.thumbnailArea').html(response);
}
问题是复选框不会被重置。我希望它们在从 ajax 表单返回的响应中都是错误的。但是,这是行不通的。其他一切正常,只是复选框不会自行重置。
【问题讨论】:
-
您没有任何带有
class="check-box"的输入。但是你的脚本有什么意义。如果您不希望他们检查何时加载部分,则将PageCheck的值设置为 false。 -
刚刚编辑了答案。但这不是导致问题的原因。即使我在控制器中将 pageCheck 设置为 false,它也不起作用。
-
什么(当然是个问题)?如果每个
PageCheck属性的值为false,那么所有复选框都将被取消选中。你认为你想用这个脚本做什么?
标签: javascript jquery ajax asp.net-mvc checkbox