我查看了其他几个帖子并尝试实施他们的解决方案,但它们似乎不起作用:/
我有一个带有 3 个参数的操作:
public async Task<something> Post([FromBody]dynamic param1, [FromQuery]int[] param2, [FromQuery]string param3)
public async Task<something> Post([FromBody]dynamic param1, [FromQuery]List<int> param2, [FromQuery]string param3)
http 请求:http://localhost:8080/api/someResource?param1=testValue¶m2=0¶m2=1¶m2=2¶m2=34
body (json(: {"test":123}
参数1 和参数 3 按预期绑定,但参数 2 要么总是 null(如果集合(或 int[0](如果数组(。
模型状态指示没有错误。但是,如果我手动检查 context: HttpContext.Request.Query["param2"][0], HttpContext.Request.Query["param2"][1]等。我可以得到这个值 道路。另一篇帖子提到他们刚刚发送了一个逗号分隔的帖子 集合和 .拆分它们,但我更喜欢使用模型活页夹 如果可能的话。任何帮助将不胜感激。
有两种方法可以解决这个问题:
-
更改操作代码,如下所示:
[HttpPost] public async Task<something> Post([FromBody]dynamic param1, [FromQuery(Name ="param2")]int[] param2, [FromQuery]string param3) { // //// }
然后,您可以按上述方式发送请求。
- 通过为 param2 中的每个元素附加索引
[]
来发送 QueryString:
POST /yourpath/?param1=testValue¶m2[0]=0¶m2[1]=1¶m2[2]=2¶m2[3]=34 HTTP/1.1
Content-Type : application/json
{"test":123}
两者都应该按预期工作。