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

Asp.net Core Razor Pages全局驼峰序列化配置失效问题求助

嘿,这个问题我之前也踩过坑!核心原因是ASP.NET Core 3.0及以后版本默认改用了System.Text.Json作为JSON序列化器,而你配置的CamelCasePropertyNamesContractResolver是Newtonsoft.Json(也就是Json.NET)里的类,对默认的序列化器完全不起作用~

下面给你两种针对性的解决方案:

方案一:用默认的System.Text.Json配置(推荐)

因为你是Razor Pages项目,直接在Startup.cs的ConfigureServices里用AddRazorPages来配置,替换你原来的代码:

services.AddRazorPages()
    .AddJsonOptions(options =>
    {
        // 启用全局驼峰命名策略
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
        // 如果需要忽略null值,可以额外添加这行
        // options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
    });

配置完成后,所有通过JsonResult返回的JSON都会自动转换成驼峰命名格式。

方案二:继续使用Newtonsoft.Json(Json.NET)

如果你的项目依赖Newtonsoft的特殊特性(比如复杂的自定义序列化规则),那得先安装对应的NuGet包:Microsoft.AspNetCore.Mvc.NewtonsoftJson,然后再配置:

services.AddRazorPages()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        // 这里还可以添加其他Newtonsoft专属配置,比如日期格式
        // options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
    });

最后要注意的小细节

确保你在Razor Page后台返回JSON时,用的是return new JsonResult(你的数据模型);,而不是自己手动用JsonConvert.SerializeObject然后返回Content——后者会绕过全局配置,导致驼峰命名不生效!

比如正确的返回示例:

public IActionResult OnGetUserInfo()
{
    var user = new { UserName = "Ray", Age = 30 };
    return new JsonResult(user);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:25