C# net核心API对象数组参数始终为空

C# net核心API对象数组参数始终为空,c#,asp.net-core,C#,Asp.net Core,我有这门课 public enum Comparison { Eq, Neq } public class Filter { public string Name { get; set; } public string Value { get; set; } public Comparison Comparison { get; set; } } 我的操作应该接受一组筛选器 public async Task<IActionResult> I

我有这门课

public enum Comparison
{
    Eq,
    Neq
}
public class Filter
{
    public string Name { get; set; }
    public string Value { get; set; }
    public Comparison Comparison { get; set; }
}
我的操作应该接受一组筛选器

public async Task<IActionResult> Index([FromQuery(Name = "filter")]Filter[] filter)
{
    return Ok();
}
公共异步任务索引([FromQuery(Name=“filter”)]filter[]filter)
{
返回Ok();
}
filter
始终是包含此url的空数组

https://localhost:5001/configtemplates?filter=%7B%0A%20%20%22Name%22%3A%20%22Name%22%2C%0A%20%20%22Value%22%3A%20%22Test%22%2C%0A%20%20%22Comparison%22%3A%201%0A%7D&filter=%7B%0A%20%20%22name%22%3A%20%22Description%22%2C%0A%20%20%22value%22%3A%20%22Test%22%2C%0A%20%20%22comparison%22%3A%201%0A%7D

过滤器
的类型更改为
字符串
时,它会映射一个
字符串[]
。因此,我希望问题出现在
Filter[]
的绑定中

如何使其与筛选器[]绑定

更新:

如果URL采用此格式,则可以分析
过滤器[]
https://localhost:5001/configtemplates?filter%5B0%5D.n=Name&filter%5B0%5D.c=6&filter%5B0%5D.v=bla&filter%5B1%5D.n=Name&filter%5B1%5D.c=6&filter%5B1%5D.v=bli&filter%5B2%5D.n=ID&filter%5B2%5D.c=6&filter%5B2%5D.v=blu

现在还可以,但我不确定这是否是官方标准。e、 大摇大摆是行不通的

谢谢大家!

我认为这会有帮助。您应该将属性更改为[FromBody](并在body中发送过滤器)并创建一个具有属性的对象

Filter[] filters {get; set;}

您可以使用System.Text.Json对其进行反序列化。 示例链接:https://localhost:5001/api/test/Index?filter=[{%22name%22:%22bbbb%22},{%22name%22:%22bbbb%22}]

公共异步任务索引([FromQuery(Name=“filter”)]字符串筛选器)
{
列表过滤器=System.Text.Json.JsonSerializer.Deserialize(过滤器);
返回Ok();
}

你好,谢谢,恐怕在get方法中使用body不是个好主意。是的,我忘了它是get。您是否尝试按此处所示格式化链接:?