【发布时间】:2015-05-05 12:26:39
【问题描述】:
在 MVC 中对服务器的 AJAX 请求中,如何将 id 列表传递给控制器的操作函数?
我接受使用或不使用 Html 帮助程序。
我知道 MVC 的模型绑定器在处理 int、string 和 bool 等简单类型时没有问题。
是不是我必须在动作中使用和数组?
我不在乎我是否必须使用array 或List,即使我使用int 或strings 的字符串我总是可以转换它们。我只需要它们在服务器上。
我的 List ids 目前为 null。
Javascript:
var ids= [1,4,5];
// ajax request with ids..
MVC 动作:
public ActionResult ShowComputerPackageBuffer(List<int> ids) // ids are null
{
// build model ect..
return PartialView(model);
}
编辑:添加了我的 AJAX 请求
$(document).ready(function () {
$('#spanComputerPackagesBuffer').on('click', function () {
var ids = $('#divComputerPackagesBuffer').data('buffer');
console.log('bufferIds: ' + bufferIds);
var data = {
ids: ids
};
var url = getUrlShowComputerPackageBuffer();
loadTable(url, "result", data);
});
});
// AJAX's
function loadTable(url, updateTargetId, data) {
var promise = $.ajax({
url: url,
dataType: "html",
data: data
})
.done(function (result) {
$('#' + updateTargetId).html(result);
})
.fail(function (jqXhr, textStatus, errorThrown) {
var errMsg = textStatus.toUpperCase() + ": " + errorThrown + '. Could not load HTML.';
alert(errMsg);
});
};
// URL's
function getUrlShowComputerPackageBuffer() {
return '@Url.Action("ShowComputerPackageBuffer", "Buffer")';
};
解决方案://感谢@aherrick 评论。我错过了古老的“传统”
$.ajax({
type: "POST",
url: '@Url.Action("ShowComputerPackageBuffer", "Buffer")',
dataType: "json",
traditional: true,
data: {
bufferIds: bufferIds
}
});
【问题讨论】:
-
您能展示一下您是如何发出 AJAX 请求的吗?
-
@OmriAharon 确定一会儿
-
使用
traditional参数。 stackoverflow.com/questions/4402036/… -
啊,是的,这敲响了一些钟声!我认为它会有很大帮助,我现在就试试。
-
@aherrick Brilliant 它有效。如果你回答我会接受。我也会为其他人编辑我的解决方案。
标签: javascript ajax asp.net-mvc asp.net-mvc-4 asp.net-mvc-5