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

fetch提交JSON后后端UserModel绑定字段全为null,常规排查无效

模型绑定为null的问题修正

核心错误定位

  • 前端请求头字段命名不符合HTTP规范:原代码中自定义了名为Content的请求头,服务端无法通过这个字段识别请求体的格式,不会触发JSON解析流程。正确的标准头字段是Content-Type,作用是告知服务端当前请求携带的实体内容的编码与格式。
  • 控制器参数缺少绑定规则指定:默认模型绑定流程仅会从路由值、查询字符串、表单字段中匹配参数值,不会主动读取请求体中的JSON内容完成反序列化,必须显式指定从请求体绑定的规则,框架才会正确解析入参。

代码修正方案

前端请求修正

替换错误的请求头字段为标准Content-Type:

fetch("/Admin/SaveUser", {
    method: "Post",
    headers: {
        "Content-Type": "application/json",
        'Accept': 'application/json;charset=utf-8'
    },
    body: JSON.stringify(userData)
}).then(response => {
    response.json().then(result => {
        UpdateDisplay();
    });
});

控制器逻辑修正

根据使用的框架版本添加对应的请求体绑定特性:

  • 针对ASP.NET Core、ASP.NET Web API项目,给入参增加[FromBody]特性:
[HttpPost]
public JsonResult SaveUser([FromBody] UserModel user)
{
    UserModel.UpdateUser(user);
    return Json(false);
}
  • 针对基于.NET Framework的传统ASP.NET MVC项目(继承自System.Web.Mvc.Controller的控制器),框架默认没有内置JSON请求体解析能力,需要额外引入JSON值提供器扩展,或手动读取请求流完成JSON反序列化,仅靠特性标注无法触发绑定逻辑。

排查补充

你之前验证的模型定义、getter/setter配置、JSON字段名匹配、stringify序列化操作都是正确的,问题根源完全来自上述的头字段错误与绑定规则缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 02:06:08