如何将集合与对象绑定?

How to bind a collection with objects?

我需要从查询字符串绑定对象集合,但我找不到正确的查询字符串格式。

我的控制器代码:

public class Filter
{
    public string Name { get; set; }
    public string Operator { get; set; }
    public object Value { get; set; }
}

public void Get(IEnumerable<Filter> filters)
{
     ....
}

如果你确实想通过查询字符串传递对象,你可以尝试如下:

https://localhost:44389/Test/Index?filters[0].Name=n1&filters[1].Name=n2&filters[2].Name=n3&filters[2].Value=v3

结果:

相关官方文档:

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding?view=aspnetcore-6.0#collections

但我认为这不是一个好的解决方案,因为Url的长度是有限的,如果你的模型有很多属性并且你的集合有很多元素,你可能会得到一些错误