如何从Post中的csv查询参数绑定可发布列表

时间:2017-12-01 17:19:51

标签: c# jquery asp.net web-services asp.net-web-api

我正在通过ajax调用发送一个数组,如下所示:

$.ajax({
    url: `${rootUrl}api/groups/EditMemberGroups?groupIds=${userGroupIds}`,
    type: "POST",
    cache: false,
    dataType: "json",
    processData: false,
    contentType: false
});

Controller看起来像这样:

[HttpPost]
public void EditMemberGroups(IEnumerable<int> groupIds)
{
    GroupMemberService.EditMemberGroups(groupIds);
}

问题是当它到达这个api调用时groupIds为空。调用如下所示:http://localhost/api/groups/EditMemberGroups?groupIds=1,2,3

任何见解都将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

您需要一个包含列表的类:

public class ListOfGroupIds
{
    public IEnumerable<int> GroupIds { get; set; }
}

将您的终点更改为:

public void EditMemberGroups([FromBody] ListOfGroupIds anyNameHere)

将数据作为JSON对象发送:

data: { 'GroupIds': groupIds }

答案 1 :(得分:0)

您必须在代码中更改两件事。首先,您必须添加[FromQuery]属性以指定此值来自查询而不是帖子正文。

public void EditMemberGroups([FromQuery]IEnumerable<int> groupIds)

第二个变化是API调用本身。您必须发送如下数据:

http://localhost/api/groups/EditMemberGroups?groupIds=1&groupIds=2&groupIds=3