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

ASP.NET Boilerplate GET请求含List复杂对象入参反序列化空列表问题

问题核心原因

GET请求默认从查询字符串绑定参数,ASP.NET Core原生对查询字符串中嵌套的自定义类集合没有默认的自动绑定支持,且Swagger生成的GET请求参数格式往往不符合绑定要求,导致反序列化后得到空集合。


解决方案

  • 方案1:显式指定参数绑定来源
    在服务方法的入参前添加[FromQuery]特性,强制框架从查询字符串解析复杂模型:

    using Microsoft.AspNetCore.Mvc;
    
    public async Task<object> GetTargetsLocations([FromQuery] MyModel model)
    {
        ....
    }
    

    同时确认请求的查询字符串参数格式符合绑定规则,需要按索引传递集合元素,示例格式:

    ?Samples[0].item1=1.2&Samples[0].item2=3.4&Samples[1].item1=5.6&Samples[1].item2=7.8
    
  • 方案2:改用POST请求传递参数
    复杂参数场景更推荐用POST请求,避免查询字符串长度限制和格式问题,修改方法如下:

    using Microsoft.AspNetCore.Mvc;
    
    [HttpPost]
    public async Task<object> GetTargetsLocations([FromBody] MyModel model)
    {
        ....
    }
    

    请求时在Body中传递JSON格式参数即可,示例:

    {
      "Samples": [
        {"item1": 1.2, "item2": 3.4},
        {"item1": 5.6, "item2": 7.8}
      ]
    }
    
  • 方案3:自定义模型绑定器(特殊场景可选)
    如果必须使用GET请求且不能调整参数格式,可以自定义模型绑定器解析查询字符串中的Samples参数,该方案开发成本较高,非必要不推荐。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:02