项目中有一个功能是需要前台传递一个数组参数给后台,用的架构是asp.net mvc前台的页面需要传递一个数组参数给controller。后台接收的时候数组一直为null,试了各种方法也不行。
下面看一下具体的代码,以及解决方法
前台代码
var _list = [];
for (var i = 0; i < checkedRow.length; i++) {
_list[i] = checkedRow[i].ID;
}
$.ajax({
url: '@Url.Action("SetCallBackStatus")',
data: { "selectedIDs": _list },
//data: _list,
dataType: "json",
type: "POST",
traditional: true,
success: function (responseJSON) {
// your logic
alert('Ok');
}
});
注意:
1、_list是一个数组
2、ajax参数中data为{“selectedIDs”:_list}
3、这种方式比较重要的就是traditional:true。或者将_list参数转换一下$.param(_list.true)。这里其实就是将_list作为传统的方式传递给后台,jQuery默认是做了转换的
后台代码
public ActionResult SetCallBackStatus(List<int> selectedIDs)
{
string result = "ok";
string errMsg = "";
return this.JsonFormat(new { result = result, errMsg = errMsg });
}