在内部视图中,我有带有相应复选框的图像列表。我想检查一个或多个图像并将图像 ID 存储到 int 数组中。此 int 数组应发送到控制器以进行进一步处理。
我已经在这上面花了太多时间,而且我在控制器上得到 int[] data null
问题是:为什么我在控制器上得到空值?
解决了! 在我的 _Layout jquery 脚本中,捆绑调用位于文档的末尾,当我移到顶部时,一切正常。
看法
<div id="newsImages">
<img width="50" height="50" alt="" src="/imageOne.jpg">
<input type="checkbox" class="imgCheckbox" id="4">
<img width="50" height="50" alt="" src="/imageTwo.jpg">
<input type="checkbox" class="imgCheckbox" id="5">
<input type="button" value="Delete" name="deleteImgBtn" id="deleteImgBtn" class="deleteImagesBtn">
</div>
JS
var imgList = [];
$(document).on("click", "#deleteImgBtn", function (e) {
e.preventDefault();
$('.imgCheckbox:checked').each(function () {
var id = $(this).attr('id');
//add image id to the array of ints
imgList.push(id);
});
jQuery.ajaxSettings.traditional = true;
var options = {
url: '/news/deleteimages',
type: 'POST',
data: { data: imgList },
traditional: true
};
$.ajax(options).done(function (data) {
var $target = $('#newsImages');
$target.html(data);
});
//reset array of int to prevent browser to send duplicated
//img id to the controller on second attempt after ajax request is completed
imgList.length = 0;
//prevent browser from any default actions
return false;
});
控制器
public ActionResult DeleteImages(int[] data)
{
...
}