ASP Core 2.1 模型绑定器和传递集合不绑定



我查看了其他几个帖子并尝试实施他们的解决方案,但它们似乎不起作用:/

我有一个带有 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&param2=0&param2=1&param2=2&param2=34

body (json(: {"test":123}

参数

1 和参数 3 按预期绑定,但参数 2 要么总是 null(如果集合(或 int[0](如果数组(。

模型状态指示没有错误。但是,如果我手动检查 context: HttpContext.Request.Query["param2"][0], HttpContext.Request.Query["param2"][1]等。我可以得到这个值 道路。另一篇帖子提到他们刚刚发送了一个逗号分隔的帖子 集合和 .拆分它们,但我更喜欢使用模型活页夹 如果可能的话。任何帮助将不胜感激。

有两种方法可以解决这个问题:

  1. 更改操作代码,如下所示:

    [HttpPost]
    public async Task<something> Post([FromBody]dynamic param1, [FromQuery(Name ="param2")]int[] param2, [FromQuery]string param3) {
    // ////
    }
    

然后,您可以按上述方式发送请求。

  1. 通过为 param2 中的每个元素附加索引[]来发送 QueryString:

POST /yourpath/?param1=testValue&param2[0]=0&param2[1]=1&param2[2]=2&param2[3]=34 HTTP/1.1 
Content-Type : application/json
{"test":123}

两者都应该按预期工作。

最新更新