WebAPI POST注册接口接收Model对象始终为NULL的问题求助
解决Web API POST方法接收Model为NULL的问题
我来帮你排查这个头疼的问题!这种情况我之前在项目里也碰到过,大概率是请求格式、Model绑定配置或者字段匹配的问题,咱们一步步来梳理:
1. 先检查Postman的请求头配置
Web API默认是通过JSON格式来绑定复杂Model的,所以你必须在Postman里设置正确的请求头:
- 打开Postman的「Headers」标签,添加一条:
- Key:
Content-Type - Value:
application/json
如果没加这个,或者填成了form-data、x-www-form-urlencoded,Web API根本没法正确解析请求体里的内容,自然会得到null的Model。
- Key:
2. 确认请求体JSON字段与Model属性完全匹配
你的EmployeeModel属性是EmpNumber、MobileNumber、IMEINumber,那Postman里的JSON请求体必须严格对应这些字段名(大小写敏感!):
{ "EmpNumber": "E007", "MobileNumber": "13900139000", "IMEINumber": "987654321098765" }
要是你JSON里写的是empnumber全小写,或者Emp_Number带下划线,都会导致绑定失败,Model直接为null。
3. 检查Model类的属性访问权限
确保你的EmployeeModel属性都有公共的get和set方法,比如:
public class EmployeeModel { public string EmpNumber { get; set; } public string MobileNumber { get; set; } public string IMEINumber { get; set; } }
如果属性只有get没有set,或者访问修饰符是private,Web API没法给属性赋值,Model肯定是null。
4. 给Action参数加上[FromBody]特性
在你的POST方法参数前加上[FromBody],明确告诉Web API从请求体里读取数据:
public HttpResponseMessage PostStudent([FromBody]EmployeeModel emp) { if (ModelState.IsValid) { using (HRMSEntities reg = new HRMSEntities()) { APIRegistration entities = new APIRegistration(); entities.Emp_No = emp.EmpNumber; entities.MobileNo = emp.MobileNumber; entities.IMEINo = emp.IMEINumber; // 你的后续代码 } } // 其他逻辑 }
这个特性在Web API处理复杂类型参数时是必须的,尤其是POST请求。
5. 检查Web API的序列化配置(针对旧版ASP.NET Web API)
如果你用的是传统ASP.NET Web API(不是ASP.NET Core),确认WebApiConfig.cs里没有禁用JSON格式化:
public static void Register(HttpConfiguration config) { // 移除XML格式化器,优先用JSON config.Formatters.Remove(config.Formatters.XmlFormatter); // 或者确保JSON格式化器支持正确的媒体类型 config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); }
要是默认启用了XML格式化,而你的请求是JSON格式,也会导致绑定失败。
你可以按照上面的顺序逐一排查,大概率能解决Model为null的问题!
内容的提问来源于stack exchange,提问作者Rajaraman Sahasranaman
相关产品推荐
相关产品推荐

