【问题标题】:ASP.NET Core Binding case sensitivityASP.NET Core 绑定区分大小写
【发布时间】:2022-01-25 06:21:52
【问题描述】:

我创建了 CRUD 控制器。创建模型时,我需要使用模式:

{ "id": int, "name": string }

但控制器也绑定了架构

{ "Id": int, "Name": string }

如何强制控制器只绑定小写版本{ "id": int, "name": string }

【问题讨论】:

    标签: c# asp.net-core asp.net-web-api binding


    【解决方案1】:

    网络应用的默认JsonSerializerOptions不区分大小写

    取自these docs(见注释):

    默认情况下,反序列化查找区分大小写的属性名 JSON 和目标对象属性之间的匹配。改变这一点 行为,将 JsonSerializerOptions.PropertyNameCaseInsensitive 设置为 真的:

    注意

    网络默认是不区分大小写

    您希望将序列化程序配置为使用PropertyNameCaseInsensitive = false 以便区分大小写。

    您可以在Startup.cs中配置ConfigureServices方法中的选项:

    services.AddControllers()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
        });
    

    或在 .NET 6 中使用最少的 API:

    builder.Services.Configure<JsonOptions>(options =>
    {
        options.SerializerOptions.PropertyNameCaseInsensitive = false;
    });
    

    【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2012-07-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2018-10-10
    • 2013-11-02
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多