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

.NET5 Core API Post请求[FromForm]无法接收Dictionary而[FromBody]正常问题

问题原因分析
  • 请求Content-Type与[FromForm]绑定要求不匹配
    [FromForm] 特性仅用于解析 application/x-www-form-urlencoded(普通表单)或 multipart/form-data(带文件表单)格式的请求数据。你当前通过Swagger发送的是JSON结构的请求,默认Content-Type为 application/json,这类请求仅会被[FromBody]对应的JSON序列化器处理,[FromForm]的表单绑定器不会解析JSON内容,因此无法读取到参数值,导致DeviceDetails属性为null。

  • 表单格式下Dictionary的绑定规则与JSON不同
    即便你将请求改为表单格式提交,也不能直接传入JSON嵌套结构。ASP.NET Core的表单绑定器对字典类型参数有固定的格式要求:

字典的键需要遵循 属性名[字典键名] 的命名规则,对应的值为字典项的value。

比如你要传递的DeviceDetails字典,需要按如下格式构造表单字段:

DeviceDetails[additionalProp1] = "string"
DeviceDetails[additionalProp2] = "string"
DeviceDetails[additionalProp3] = "string"

只有符合上述格式的表单数据,绑定器才能正确映射到RequestExample的DeviceDetails字典属性中。

验证方法

你可以按如下步骤验证[FromForm]接口的绑定逻辑:

  1. 在Swagger的MyFromForm接口请求页,将请求格式切换为 multipart/form-data 或 application/x-www-form-urlencoded
  2. 按照 DeviceDetails[键名] 的格式逐个添加表单字段和对应值
  3. 发送请求即可看到DeviceDetails可以正常被绑定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:02