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

ASP.NET Core 7中无法获取object对象,报Signals字段必填错误

为什么ASP.NET Core 7模型里的Signals字段一直报必填错误?

1. 引用类型的默认验证规则

ASP.NET Core对引用类型(包括object)有默认的隐式必填校验,哪怕你把字段改成object?允许空值也没用——如果请求里完全没传Signals这个字段,模型验证还是会判定它缺失,抛出必填错误。这是因为框架默认认为引用类型字段应该被提供,除非你明确告诉它不用验证。

2. 空值传输的误区

如果前端传的是undefined(比如JS里没给这个字段赋值),ASP.NET Core会把这种情况当成字段缺失,而不是null。哪怕你的字段是object?,也会触发必填校验。只有当请求里明确传了"Signals": null(JSON格式),框架才会识别为字段存在且值为null,不会报错。

3. 模型绑定的解析问题

检查请求的内容类型是否正确(比如application/json),如果格式不对或者传输的Signals数据无法被解析成object类型,模型绑定器会直接判定字段未正确提供,进而触发必填错误。

解决办法

  • 给Signals字段加[ValidateNever]特性,直接跳过该字段的验证:
    [ValidateNever]
    public object? Signals { get; set; }
    
  • 确保请求里明确包含Signals字段,哪怕值是null(比如JSON里保留"Signals": null),不要直接省略这个字段。
  • 检查Program.cs里的全局验证配置,有没有强制要求引用类型必须非空的自定义规则,如果有,调整相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:02:07