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

JSON无法与C# CheckSheetViewModel匹配,反序列化返回Null

问题排查与解决方案

常见原因及对应处理方式

  • 请求Content-Type未设置正确
    Ajax请求必须指定Content-Type: application/json,否则ASP.NET MVC无法识别JSON格式,直接导致反序列化失败。示例Ajax配置:

    $.ajax({
      url: '/Controller/checkSheetUpdate',
      type: 'POST',
      contentType: 'application/json', // 必须设置
      data: JSON.stringify(yourData), // 必须用JSON.stringify序列化对象
      success: function(result) { /* 处理逻辑 */ }
    });
    
  • 未使用JSON.stringify序列化请求数据
    如果直接传入JavaScript对象而非标准JSON字符串,ASP.NET MVC无法正确解析,必须用JSON.stringify()将对象转为JSON格式字符串后再发送。

  • 模型类不满足反序列化要求
    检查CheckSheetViewModel是否存在以下问题:

    • 没有公共无参构造函数:ASP.NET MVC反序列化需要类具备公共无参构造函数
    • 属性访问器缺失:需要绑定的属性必须是公共且包含get/set访问器
    • 嵌套复杂类型异常:如果模型包含子对象,需确保子对象的属性名称与JSON键完全匹配,且子对象同样满足构造函数和访问器要求
  • Controller参数未添加[FromBody]特性(ASP.NET Core场景)
    在ASP.NET Core中,POST请求的JSON参数必须添加[FromBody]特性,明确指定从请求体读取数据:

    [HttpPost]
    public ActionResult checkSheetUpdate([FromBody] CheckSheetViewModel data)
    {
        // 业务逻辑
    }
    
  • 请求方式不匹配
    确保Controller方法标记了[HttpPost]特性,同时Ajax请求的type设置为POST。若使用GET请求,JSON数据会被拼接到URL中,无法被反序列化为复杂模型。

  • JSON数据存在异常字段
    若JSON中包含CheckSheetViewModel没有的字段,部分严格的反序列化配置可能导致失败(默认配置通常会忽略未知字段),可尝试移除多余字段后测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:55:34