You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Query参数中的对象列表为Null?添加[FromQuery]仍无效

解决方案

问题根源

ASP.NET Core的Query字符串模型绑定对复杂对象列表有特定格式要求,默认不会自动识别任意格式的列表参数,这就是filters始终为空的原因——而name作为简单类型参数不受此限制。

正确的请求参数格式

你需要按照以下两种格式之一传递filters参数:

1. 带索引的格式

通过索引标识列表中的每个对象,适合属性较多的DTO场景:

/filter?filters[0].Index=1&filters[0].PropertyName=SpermCount&filters[1].Index=2&filters[1].PropertyName=Motility&name=testName

2. 重复键名格式

省略索引,直接重复对象的属性键名,ASP.NET Core会自动将同键名的参数打包为列表(适合结构简单的DTO):

/filter?filters.Index=1&filters.PropertyName=SpermCount&filters.Index=2&filters.PropertyName=Motility&name=testName

验证DTO定义

确保SpermFilterDTO是公共类,且属性具备公共的getter和setter,否则模型绑定无法完成赋值:

public class SpermFilterDTO
{
    public int Index { get; set; }
    // 根据业务需求添加其他属性,例如:
    public string PropertyName { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
}

测试建议

如果用Swagger测试,可能需要手动构造上述格式的Query参数;默认Swagger支持带索引的参数格式,也可以直接在参数输入框按索引结构填写。

内容的提问来源于stack exchange,提问作者Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:30:36