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
相关产品推荐
相关产品推荐

