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

.NET Core 7中Ajax提交三级嵌套节点时C#读取数据为Null

问题分析与解决方案

首先纠正一个细节:你应该使用[FromBody]特性而非[FormBody],这是.NET Core接收请求体数据的标准特性。

针对第三级Assets节点读取为Null的问题,以下是常见原因和解决方法:

1. 核对实体类层级结构定义

确保后端实体类和前端提交的JSON结构完全匹配,重点检查:

  • 属性名称的大小写(比如前端是assets,后端要对应Assets,或通过序列化配置统一规则)
  • 嵌套类的访问修饰符(必须是public)
  • 每个类都有无参构造函数(反序列化需要)

示例正确的实体结构:

public class RootModel
{
    public List<CampaignModel> Campaigns { get; set; }
}

public class CampaignModel
{
    public string CampaignName { get; set; }
    public List<AssetModel> Assets { get; set; } // 第三级节点
}

public class AssetModel
{
    public string AssetId { get; set; }
    public string FileUrl { get; set; }
}

2. 确保Ajax请求的格式正确

前端Ajax必须设置contentType: "application/json",并且将数据序列化为JSON字符串,不能直接传递JS对象:

const submitData = {
    Campaigns: [
        {
            CampaignName: "夏季促销",
            Assets: [
                { AssetId: "asset001", FileUrl: "/images/banner1.jpg" },
                { AssetId: "asset002", FileUrl: "/images/poster1.jpg" }
            ]
        }
    ]
};

$.ajax({
    url: "/api/campaigns/submit",
    type: "POST",
    contentType: "application/json",
    data: JSON.stringify(submitData), // 必须序列化
    success: function(res) {
        console.log(res);
    }
});

3. 检查后端Action的参数绑定

确保Action方法的参数正确标记[FromBody],且参数类型为你定义的根实体类:

[HttpPost]
public IActionResult SubmitCampaign([FromBody] RootModel requestModel)
{
    // 此时可检查requestModel.Campaigns[0].Assets是否正常赋值
    return Ok();
}

4. 排查JSON序列化配置

如果前端用驼峰式命名(如campaignName)、后端用帕斯卡式(CampaignName),需确保.NET Core的JSON序列化支持自动映射(默认已开启,也可显式配置):
在Program.cs中:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    });

另外,避免给实体类属性设置readonly或仅含getter,反序列化需要能写入属性值。

5. 调试请求内容

用浏览器开发者工具的Network标签,查看发送的JSON是否包含完整的Assets节点;也可在后端读取原始请求体,确认数据未在传输中丢失:

using var reader = new StreamReader(Request.Body);
var rawJson = await reader.ReadToEndAsync();
// 输出rawJson查看实际接收的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:30:01