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

ASP.NET Core 8如何从查询字符串获取含数组的复杂对象?

ASP.NET Core 8 查询字符串绑定复杂数组对象问题解决

核心问题原因

ASP.NET Core的查询字符串模型绑定对复杂对象数组有严格的格式要求,你的SortFields和Filters数组为空,是因为请求的查询字符串未遵循绑定规则,同时SortingFieldDto中的object类型属性也会导致绑定失败。


1. 正确的查询字符串格式

针对你的DTO结构,查询字符串需要按索引+属性名的格式传递数组元素,具体示例如下:

排序字段(SortFields)传递

每个SortingFieldDto元素通过索引指定属性:

SortFields[0].Field=Number&SortFields[0].RangeStart=1&SortFields[0].RangeEnd=100
SortFields[1].Field=CreateTime&SortFields[1].RangeStart=2024-01-01&SortFields[1].RangeEnd=2024-12-31

筛选条件(Filters)传递

每个Filter元素同样通过索引指定,其中Values数组需要重复指定参数名:

Filters[0].Id=TypeOfConstruction&Filters[0].Value=Residential&Filters[0].Value=Commercial
Filters[1].Id=Status&Filters[1].Value=Active&Filters[1].Value=Inactive

完整查询字符串示例

/ItemsSorted?ParentId=10&SortFields[0].Field=Number&SortFields[0].RangeStart=1&SortFields[0].RangeEnd=50&SortFields[1].Field=Name&SortFields[1].RangeStart=A&SortFields[1].RangeEnd=M&Filters[0].Id=TypeOfConstruction&Filters[0].Value=Residential&Filters[0].Value=Industrial&Filters[1].Id=Area&Filters[1].Value=North&Page=1&PageSize=15

2. DTO结构调整建议

替换object类型属性

SortingFieldDto中的RangeStart和RangeEnd使用object类型时,ASP.NET Core无法自动将查询字符串的字符串值转换为object,会直接绑定失败。建议换成具体数据类型(如string、int、DateTime):

public class SortingFieldDto
{
    public string Field { get; set; } = "Number";
    // 根据实际业务场景替换为具体类型
    public string RangeStart { get; set; } = null!;
    public string RangeEnd { get; set; } = null!;
}

如果必须保留object类型,需要自定义模型绑定器处理类型转换,或者在接收后手动将字符串转换为目标类型。

保持Filter类的属性配置

Filter类中的[FromQuery(Name = "Value")]配置正确,但注意传递Values数组时需要重复参数名,而非逗号分隔(默认不支持逗号分隔的数组绑定,若需要此功能需额外配置)。


3. 控制器方法验证

你的控制器方法已经正确添加[FromQuery]特性,无需额外修改:

[HttpGet("ItemsSorted")]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<ActionResult> GetItemsSorted([FromQuery] GetItemsSortedDto getDto)
{
    var query = _mapper.Map<GetItemsByParentSortedQuery>(getDto);
    var result = await Mediator.Send(query);
    return Ok(query);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:26:16