在对MVC中的服务器的AJAX请求中,如何将ID列表传递给控制器的动作函数?
我接受是否使用HTML帮助程序。
我知道,当涉及到简单的类型,如MVC的模型绑定没有问题int,string和bool。
int
string
bool
就像我必须在动作中使用和数组一样吗?
我不在乎我是否必须使用array或者List即使字符串我int或strings我总是可以将它们转换。我只需要它们在服务器上。我的列表ID目前为空。
array
List
strings
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 } });
使用traditional参数并将其设置为true。
traditional
true
$.ajax({ type: "POST", url: "/URL", dataType: "json", traditional: true, data: {} });