我正在构建一个逗号分隔的字符串,并将其传递给我的WebAPI方法,如下所示:
var projectids="";
for (var i = 0; i < chk.length; i++) {
projectids += chk[i].VMIProjectId + ",";
}
//projectids = "1,2,3"
$.ajax({
type: 'POST',
url: "http://localhost:52555/device/6/AddProjectsToDevice",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(projectids),
success: function (msg) {
},
error: function (data) {
debugger;
}
});
我已成功到达WebApi方法,但我的IEnumerable数组projectIds始终为null。这是方法:
[HttpPost]
[Route("device/{deviceId}/AddProjectsToDevice")]
public IEnumerable<VMI_DeviceLinkedProject> AddProjectsToDevice([FromUri]long deviceId,[FromBody] IEnumerable<long> projectIds){}
如何将逗号分隔的ID列表传递给我的WebAPI方法?感谢您的阅读
答案 0 :(得分:3)
现在你的控制器动作是获取逗号分隔的数字字符串而不是JSON数组("[1,2,3,4]"
),这就是模型绑定器不起作用的原因:
var projectids = [];
for (var i = 0; i < chk.length; i++) {
projectids.push(chk[i].VMIProjectId);
}
然后,字符串化数组应该正确绑定到IEnumerable<long>
。
答案 1 :(得分:1)
您可以使用与下面相同的代码将其作为数组传递,而不是将其作为csv值传递,
var projectIdList =[];
for (var i = 0; i < chk.length; i++) {
projectIdList.push(chk[i].VMIProjectId);
}
同样将api方法中的参数名称更改为projectIdList并传递它。