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

C#控制器接收AJAX POST提交的[FromBody]参数为null问题求解

问题排查与解决步骤

  • 检查Amount字段类型匹配问题
    后端模型中Amount是decimal类型,如果前端传入的totalPrice是字符串格式(比如带货币符号、千分位分隔符,或是未转成数字类型的字符串),会导致反序列化失败,最终整个模型绑定为null。修改前端代码,显式转为数字类型:
    CompleteOrderInfo.Amount = Number(totalPrice);
    
  • 配置JSON序列化大小写不敏感
    .NET Core 3.0+默认使用System.Text.Json作为序列化器,部分版本默认开启严格大小写匹配,如果前端属性名大小写和后端模型不一致会绑定失败。在Program.cs(.NET 6+)或Startup.cs中添加如下配置:
    builder.Services.AddControllers()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
        });
    
  • 查看模型绑定错误详情
    在控制器方法中添加ModelState校验代码,打断点即可查看具体的绑定失败原因:
    [HttpPost, ActionName("PayNow")]
    public async Task<IActionResult> PayNow([FromBody] CompleteOrderInfo request)
    {
        if (!ModelState.IsValid)
        {
            // 此处打断点查看errors中的错误信息即可定位问题
            var errors = ModelState.Values
                .SelectMany(v => v.Errors)
                .Select(e => e.ErrorMessage)
                .ToList();
        }
        return View();
    }
    
  • 确认控制器添加[ApiController]特性
    如果你的控制器继承自ControllerBase,需要在类上添加[ApiController]特性,才能启用[FromBody]参数的默认绑定规则。如果是传统MVC控制器(返回视图),也可以添加该特性不影响视图返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 12:06:04