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

ASP.NET Core 6 Web API System.Text.Json模型绑定错误信息异常

问题解决:[FromBody]提交JSON时无法获取字段级验证错误

问题根源

DateOnly是值类型(struct),本身不能为null。当你通过JSON提交null值时,System.Text.Json反序列化器无法将null转换为非可空的DateOnly,导致模型绑定直接失败,此时ASP.NET Core会返回通用的"模型字段必填"错误,根本没触发[Required]属性的字段级验证。而[FromForm]提交时,表单数据是字符串格式,模型绑定器会尝试对每个字段单独解析,解析失败时会生成对应字段的错误信息。

解决方案(推荐)

将模型中的DateOnly改为可空值类型(DateOnly?),保留[Required]属性。这样反序列化时null可以被正常接受,之后[Required]会验证该字段不能为null,返回具体的字段错误信息。

修改后的模型代码:

public class ReservationReplyViewModel
{
    [Required(ErrorMessage = "The DueDate field is required.")]
    public DateOnly? DueDate { get; set; }
    [Required(ErrorMessage = "The CommitDate field is required.")]
    public DateOnly? CommitDate { get; set; }
    public string? Comment { get; set; }
}

补充说明

如果业务上必须使用非可空的DateOnly,你需要确保客户端不会提交null值,或者在反序列化阶段为null设置默认值,但这种情况下[Required]属性会失效(因为模型字段已有值),无法触发必填验证。因此使用可空值类型配合[Required]是最直接且符合.NET设计规范的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:47:05