将IEnumerable参数传递给WebAPI
本文关键字:WebAPI 参数传递 IEnumerable | 更新日期: 2023-09-27 17:50:32
我开始使用WebAPI,大多数情况下一切都很顺利。我遇到了一个特定函数的问题。这一个与另一个不同,因为它的唯一参数是IEnumerable类型。
我在Post()函数的第一行设置了一个断点,我正在击中函数,但"values"参数总是有一个0的计数。我验证了在客户端输入的参数实际上确实包含一个整数数组。如果我删除[FromUri]属性,'values'参数为NULL而不是计数为0。
我如何得到我的整数数组来通过我的WebAPI函数?
下面是WebAPI函数:[System.Web.Mvc.HttpPost]
public void Post([FromUri] IEnumerable<int> values)
{
if (values == null || !values.Any()) return;
int sortorder = 1;
foreach (int photoId in values)
{
_horseRepository.UpdateSortOrder(photoId, sortorder);
sortorder++;
}
}
下面是AJAX调用(这是使用jQuery UI可排序特性):
$(".sortable").sortable({
update: function (event, ui) {
var newArray = $(".sortable").sortable("toArray");
$.ajax({
url: '/api/photo',
type: 'POST',
contentType: 'application/json, charset=utf-8',
async: true,
dataType: 'json',
data: JSON.stringify(newArray),
complete: function (data) { }
});
}
});
contentType: 'application/json, charset=utf-8',
应该变成(内容类型和字符集之间的分隔符是分号,而不是逗号):
contentType: 'application/json; charset=utf-8',
:
public void Post([FromUri] IEnumerable<int> values)
应该变成(POST请求中没有Uri参数):
public void Post(IEnumerable<int> values)
现在可以假设newArray
(这里没有显示)是一个整数数组:
newArray = [ 1, 2, 3 ]