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

Angular 6向Web API Post传参为null问题求助

解决Angular 6 POST请求Web API接收对象为null的问题

我来帮你排查这个头疼的问题——API能触发但接收对象为null,这种情况绝大多数是模型绑定失败导致的,结合你的代码来看,主要有几个关键调整点:

1. 给Web API参数添加[FromBody]特性

ASP.NET Web API默认的模型绑定规则里,对于POST请求,复杂类型(比如你的User类)需要显式指定从请求体读取数据。你现在的API方法没有加这个特性,框架不知道从哪里去获取User对象的数据,所以才会返回null。

修改后的Web API代码:

[AllowAnonymous]
[HttpPost]
//[ValidateAntiForgeryToken]
public void Register([FromBody] User body)
{
}

2. 修复Angular端的map操作错误

看你的Angular服务代码里,map(x => x.json)这里少了括号,应该是调用json()方法,虽然这个问题不会直接导致API接收null,但会让你后续处理响应数据时出错,顺手修复一下:

修改后的Angular服务代码片段:

return this.http.post('http://localhost:54516/Account/Register', body, requestOptions)
  .map(x => x.json()); // 这里要加上括号,调用json方法

3. 确认User模型属性名完全匹配

JSON序列化默认是大小写敏感的,一定要确保Angular端的User模型和Web API端的User类属性名完全一致(包括大小写)。比如你的Angularuser.model.ts应该是这样的:

export class User {
  Email: string;
  PhoneNumber: string;
  Password: string;
  ConfirmPassword: string;
}

如果Angular里习惯用小驼峰命名(比如email),可以在Web API的User类属性上添加[JsonProperty]特性来映射:

public class User {
  [JsonProperty("email")]
  public string Email { get; set; }
  // 其他属性同理
}

先试试添加[FromBody]这个最关键的调整,基本就能解决接收null的问题了,如果还有问题再检查属性名匹配情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:38