【发布时间】:2017-07-21 22:15:42
【问题描述】:
我知道这是一个热门话题,我已经尝试了所有可以找到的解决方案,但均无济于事。我已经使用了这个问题包含的所有解决方案:Pass a List from javascript to controller。我已经将我的测试简化到非常简单。我进入控制器,但我的控制器输入参数是 {int[0]}。我确认我的数组数据在 JavaScript 和 ajax 调用中看起来不错。
谁能告诉我我错过了什么?
JavaScript 代码
var selectedIds = [];
selectedIds.push(565);
selectedIds.push(573);
selectedIds.push(571);
// selectedIds = [565, 573, 571]
$.ajax({
type: "POST",
traditional: true,
dataType: "json",
data: { "ids": JSON.stringify(selectedIds) },
//data: { "ids": selectedIds},
//data: { ids: selectedIds},
url: "api/services/getbuildingsbyid",
success: function (result) {
return result;
}
});
控制器代码
[HttpPost]
public bool GetBuildingsById(int[] ids)
{
var lookAtIds = ids; // {int[0]}
return true;
}
【问题讨论】:
-
尝试将数据设置为
{ "ids": selectedIds },否则你发送的是string而不是int[]ex{ "ids": "[565, 573, 571]"} -
或者(到@Enfyve 评论/回答),它需要是
data: JSON.stringify({ ids: selectedIds }),和contentType: 'application/json',(并删除traditional: true,)如果你传递一个复杂对象数组,那么这种格式是必要的。
标签: javascript c# ajax asp.net-mvc-3 controller