Unity中Post方法仅传字符串,无法传递自定义类对象问题排查
问题分析:API接收Post请求时自定义类属性为null
你遇到的问题核心有两个:
1. 自定义类使用字段而非属性
ASP.NET Core Web API的模型绑定默认只处理带get/set访问器的属性,而你的RegModel定义的是字段:
public class RegModel { public string UserMail; // 字段 public string UserPass; // 字段 }
客户端序列化字段生成的JSON格式没问题,但API端无法将JSON中的值绑定到字段上,导致属性为null。
2. Post方法参数未显式指定[FromBody]
虽然[ApiController]特性会自动推断请求体绑定,但显式添加[FromBody]可以明确告诉API从请求体中读取JSON数据并绑定到模型,避免潜在的绑定歧义。
解决方案
修改RegModel为属性
将字段改为带get/set的属性:
public class RegModel { public string UserMail { get; set; } public string UserPass { get; set; } }
给API的Post参数添加[FromBody]
[HttpPost] [Route("/api/doPost")] public string Post([FromBody] RegModel regModel) { string result = regModel.UserMail; return "ok " + result; }
修改后,API就能正确解析客户端发送的JSON数据,绑定到RegModel的属性上了。
内容的提问来源于stack exchange,提问作者whyme
相关产品推荐
相关产品推荐

