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

Angular与Asp.Net MVC交互:如何获取前端传递的请求数据?

解决ASP.NET MVC无法接收Angular POST JSON数据的问题

这问题我之前也碰到过,核心就是前端传的是JSON格式的请求体,但后端没做对应的接收配置。直接给你上可行方案,再解释为啥之前的方法行不通:


1. 先定义匹配的模型类

首先得在ASP.NET MVC项目里建一个和前端data结构完全对应的类,让框架能自动把JSON数据绑定到对象上:

public class SubjectModel
{
    public string Name { get; set; }
    public string Description { get; set; }
    public int TeachersCount { get; set; }
    public string Type { get; set; }
}

注意属性名和前端的键名要对应(大小写不敏感,但尽量一致能避免不必要的坑)。

2. 修改控制器方法接收数据

把你的AddSubject方法改成下面这样:

[HttpPost] // 必须标记这个,确保只处理POST请求
public string AddSubject([FromBody] SubjectModel data)
{
    // 现在data里就有前端传的所有属性了
    // 比如直接用 data.Name、data.Description 就能拿到对应值
    return "OK";
}

重点是[FromBody]这个特性——它告诉ASP.NET MVC从**请求体(Request Body)**里读取JSON数据,并自动映射到SubjectModel对象中。


为啥你之前的方法都没用?

  • Request.Form["data"]:这个是用来读取**表单编码(application/x-www-form-urlencoded)**数据的,但Angular的HttpClient.post默认传的是JSON(Content-Type: application/json),所以根本读不到。
  • Request.Query["data"]:这个是读取URL里的查询参数,而你把数据放在了POST请求体里,自然找不到。
  • public string AddSubject(object data):直接用object的话,ASP.NET MVC不知道要把JSON转换成什么具体类型,没法完成自动绑定,所以data会是null。

额外小技巧(不推荐但应急可用)

如果不想创建模型类(还是强类型更安全,能做编译时检查),也可以用JObject或者dynamic来接收:

using Newtonsoft.Json.Linq;

[HttpPost]
public string AddSubject([FromBody] JObject data)
{
    string name = data["name"].ToString();
    int teachersCount = (int)data["teachersCount"];
    // 其他属性以此类推
    return "OK";
}

内容的提问来源于stack exchange,提问作者Дмитрий Гавшин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:25:16