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

ASP.NET Core 8 MVC:jQuery POST请求控制器参数全为null

问题排查与解决方案

你的问题核心在于ASP.NET Core默认不会从POST请求的JSON体中绑定单个参数,而GET请求是从URL查询字符串绑定,所以GET能正常接收参数,POST不行。下面是具体的排查和解决方法:

一、直接解决方案:使用模型类 + [FromBody]特性

这是最规范的做法,适合多参数的POST请求:

1. 创建请求模型类

在项目中新增一个模型类,对应你发送的JSON参数:

using System.Text.Json.Serialization;

public class EmailRequest
{
    // 用JsonPropertyName特性和JS里的小驼峰键名精准对应
    [JsonPropertyName("mailTo")]
    public string MailTo { get; set; }

    [JsonPropertyName("subject")]
    public string Subject { get; set; }

    [JsonPropertyName("message")]
    public string Message { get; set; }

    [JsonPropertyName("digit32")]
    public string Digit32 { get; set; }

    [JsonPropertyName("digit16")]
    public string Digit16 { get; set; }

    [JsonPropertyName("code")]
    public string Code { get; set; }
}

2. 修改控制器方法

用[FromBody]标记模型参数,告诉框架从请求体的JSON中绑定数据:

[HttpPost]
public JsonResult SendEmailWithCode([FromBody] EmailRequest request)
{
    // 先判断模型是否绑定成功
    if (request == null || string.IsNullOrEmpty(request.MailTo))
    {
        return new JsonResult(new { Success = false, Msg = "参数无效" });
    }

    var result = _emailService.SendEmailWithCode(request.MailTo, request.Subject, request.Message);
    return new JsonResult(result);
}

二、快速排查步骤

如果调整后仍有问题,按以下步骤逐一验证:

  • 检查请求体格式:打开浏览器F12的Network面板,找到该POST请求,查看Request Payload里的JSON是否完整、键名是否和模型一致,确认JS中的mailTo、subject等变量已正确赋值。
  • 确认Content-Type头:确保请求头里的Content-Type是application/json,你的代码里已设置,但可以在Network面板里确认是否生效。
  • 验证JSON序列化:在JS代码里添加console.log(JSON.stringify(...)),打印序列化后的字符串,检查是否存在语法错误(比如逗号遗漏、引号不匹配)。
  • 简化模型绑定配置:如果不想用JsonPropertyName特性,可以在Program.cs中配置JSON序列化忽略大小写,让C#大驼峰属性自动匹配JS小驼峰键:
    builder.Services.AddControllersWithViews()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
        });
    

为什么GET能正常工作?

GET请求的参数通过URL查询字符串传递,ASP.NET Core默认会从查询字符串绑定单个参数;而POST请求的JSON参数放在请求体里,框架默认不会主动从请求体绑定单个离散参数,必须通过[FromBody]指定绑定来源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:44