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

ASP.NET Core 6模型绑定:数值绑定到字符串参数是否为正常特性?

问题解答

这是正常特性,属于.NET 6中System.Text.Json的默认反序列化行为,并非模型绑定的异常问题。

核心原因

你使用的[FromBody]特性依赖System.Text.Json处理JSON请求体的反序列化,而非ASP.NET Core的传统模型绑定系统(后者主要处理表单数据、路由参数、查询字符串等场景)。System.Text.Json的默认配置允许将JSON数值类型隐式转换为.NET字符串类型:

  • JSON中的数值(如100.00、12345)会被转换为对应的字符串表示("100"、"12345"),并赋值给模型的字符串属性。

为什么模型绑定文档找不到相关说明

因为[FromBody]的JSON反序列化逻辑由System.Text.Json独立处理,不属于常规模型绑定的范畴,所以你查阅的模型绑定文档不会包含这部分内容。

如何禁止这种隐式转换(可选)

如果你希望严格校验类型,禁止数值转字符串,可以通过配置JsonOptions修改序列化行为:

// 在Program.cs中配置
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.Strict;
    });

配置后,当请求体中出现数值类型绑定到字符串属性的情况,API会直接抛出反序列化异常,拒绝该请求。

官方文档相关说明

.NET官方文档明确指出:System.Text.Json的默认NumberHandling配置包含AllowReadingFromString和AllowWritingFromString,其中AllowReadingFromString允许将JSON数值、布尔值读取为.NET字符串类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:54:57