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

ASP.NET Core中使用FromForm绑定对象列表为空的问题咨询

ASP.NET Core表单数据绑定DTO对象列表为空的解决方案

问题本质

ASP.NET Core的表单模型绑定对复杂对象列表的提交格式有明确要求,并非功能限制。表单数据是扁平键值对结构,无法像JSON那样直接传递嵌套的列表对象,你当前的提交格式不符合绑定规则,才导致列表始终为空。

原始类型列表(如List<string>)能正常绑定,是因为它支持两种简化格式:

  • 重复键名:dtos=value1&dtos=value2
  • 索引式键名:dtos[0]=value1&dtos[1]=value2

但复杂DTO对象列表必须通过索引+属性名的键名来明确每个对象的属性,才能被绑定器识别。

正确的提交格式

要成功绑定List<Dto>,表单数据的键名需要遵循参数名[索引].属性名的格式,例如:

  • 键:dtos[0].Field,值:"test1"
  • 键:dtos[1].Field,值:"test2"

Swagger UI的适配问题

默认Swagger UI在处理[FromForm]标记的复杂对象列表时,不会自动生成符合要求的表单字段格式,这就是你用Swagger提交后列表为空的直接原因。你可以手动在Swagger的表单中添加上述格式的键值对,即可完成正确绑定。

快速验证方法

用Postman等工具测试时:

  1. 设置请求方法为POST,Content-Type为multipart/form-data
  2. 添加多个键值对,键名按dtos[N].Field格式填写(N从0开始递增)
  3. 发送请求后,控制器就能正确接收DTO列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:51:17