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

如何从URL查询参数处理TestQuery中的Names数组?示例格式咨询

嵌套对象与集合的URL查询参数绑定方案(针对C# TestQuery结构)

可行性说明

完全可行,ASP.NET(Core/Framework)的默认模型绑定器支持嵌套对象和集合类型的查询参数绑定,只要遵循正确的参数格式即可。

为什么出现filter=%5Bobject%20Object%5D

你之前直接将filter对象拼接到查询字符串中,前端会把对象默认转为字符串[object Object],经过URL编码后就变成了%5Bobject%20Object%5D,这种格式后端无法识别绑定。

正确的查询字符串格式

注意:你问题中提到的statuses是笔误,对应C#类中的字段为Names,以下是两种合法的查询字符串格式:

方式一:重复键名(推荐,更简洁)

?sort=1&filter.Names=a&filter.Names=b&filter.Names=c

方式二:带索引的格式

?sort=1&filter.Names[0]=a&filter.Names[1]=b&filter.Names[2]=c

后端处理示例(ASP.NET Core)

在Controller的Action中直接接收TestQuery参数,框架会自动完成绑定:

[HttpGet("data")]
public IActionResult GetTestData(TestQuery query)
{
    // query.Sort 会被绑定为1
    // query.Filter.Names 会被绑定为包含"a","b","c"的列表
    return Ok(query);
}

前端正确生成查询字符串的示例(JS)

避免直接拼接对象,使用URLSearchParams来生成合法的查询参数:

const queryParams = new URLSearchParams();
queryParams.set('sort', '1');
// 遍历集合添加参数
['a', 'b', 'c'].forEach(name => {
    queryParams.append('filter.Names', name);
});
// 生成最终的带查询参数的URL
const url = `/api/data?${queryParams.toString()}`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:20:35