Api的查询字符串中的数组

问题描述

使用WebClient通过查询字符串将数组发送到ApiController时出现错误400。

api方法看起来像

public IHttpActionResult List([FromUri] Model model)

在Model类中,我有

public int[] Ids { get; set; }

在客户端,代码如下:

webClient.QueryString.Add("ids","1");
webClient.QueryString.Add("ids","2");
...
await webClient.DownloadStringTaskAsync(url);

如果我仅发送一个“ ids”参数,则代码可以正常运行,但不能同时使用两个或多个。

我发现客户端创建的网址类似于“ url?ids = 1,2”而不是“ url?ids = 1&ids = 2”。

我错过了一些配置吗?

解决方法

WebClient会自动将具有相同键的多个值转换为逗号分隔的字符串。您可以更改此行为,请参见:How to build WebClient querystring with duplicate keys?

我建议尽管使用HttpClient而不是WebClient