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

ASP.NET Core属性类型无效时ModelBinding返回对象为null的解决咨询

ASP.NET Core 7.x 模型绑定类型不匹配导致对象为null的解决办法

问题场景

在ASP.NET Core 7.x的Post接口中使用如下record定义:

public record Something(int? SomeProperty, int? AnotherProperty);

接口代码:

public async Task<IActionResult> DoSomething([FromBody]Something something) {...}

当客户端发送包含类型不匹配属性的JSON时:

{
  "someProperty": "1",
  "anotherProperty": 2
}

模型绑定会静默失败,something对象直接为null——即便存在有效值属性,整个对象也无法完成绑定。需求是仅将类型错误的属性反序列化为null,而非丢弃整个对象。

解决方案

需要修改JSON序列化配置,在Program.cs中添加如下配置:

builder.Services.AddControllers()
    .AddJsonOptions(
        options =>
        {
            options.JsonSerializerOptions.NumberHandling = 
                JsonNumberHandling.AllowReadingFromString;
        }
    );

配置说明

该配置允许JSON序列化器将字符串格式的数字(比如示例中的"1")反序列化为数值类型,避免因单个属性类型不匹配导致整个对象绑定失败。对应官方文档说明:ASP.NET Core应用允许反序列化带引号的数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:27:40