在MVC中对服务器的
AJAX请求中,如何将id列表传递给控制器的动作函数?
我接受使用或不使用Html助手.
我知道MVC的模型绑定器在简单类型(如int,string和bool)方面没有问题.
它是否像我必须在行动中使用和数组?
我不在乎我是否必须使用数组或List,即使字符串I int或字符串我总是可以转换它们.我只需要在服务器上使用它们.
我的列表ID目前为空.
使用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 } });
解决方法
使用传统参数并将其设置为true.
$.ajax({ type: "POST",url: "/URL",data: {} });