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

ASP.NET Core 8中Ajax POST请求参数始终为null问题排查

ASP.NET Core 8 Ajax POST 参数为 null 的解决方案

问题原因

你的Ajax请求中,将数据包裹在了额外的model层级中(JSON.stringify({ model })),导致请求体结构为{"model":{"p1":"a","p2":"b"}},但控制器的CallPost方法期望直接接收ParamClass类型的对象,而非包含该对象的外层结构,因此模型绑定失败,参数返回null。

解决步骤

  1. 修正Ajax请求的数据结构
    直接序列化model对象,不需要额外的外层包装:

    $(document).ready(function () {
        var model = {
            p1: "a",
            p2: 'b'
        };
    
        $.post({
            url: "/test/callPost",
            data: JSON.stringify(model),
            dataType: "json",
            contentType: "application/json",
            success: function (data) { }
        });
    });
    
  2. 可选:显式指定模型绑定来源
    在控制器参数上添加[FromBody]特性,明确告知框架从请求体中绑定参数,增强代码可读性:

    [HttpPost]
    [Route("callPost")]
    public IActionResult CallPost([FromBody] ParamClass model)
    {
        return View();
    }
    

补充说明

由于你已经配置了AddNewtonsoftJson(),框架会自动处理驼峰命名(前端p1对应后端P1),因此属性名的大小写差异不会导致绑定失败,核心问题还是请求数据的层级结构不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:10:01