使用FromBody接收数据时,JsonIgnore属性未被忽略引发验证错误
解决JsonIgnore属性不生效导致的模型验证错误
不需要专门为请求体创建新类,有几种直接修复的方案:
方案1:添加[BindNever]特性
问题根源在于[JsonIgnore]只负责JSON序列化/反序列化时忽略属性,但ASP.NET Core的模型验证([ApiController]自动触发)仍会检查Name属性的必填性。加上[BindNever]可以让模型绑定器完全跳过这个属性,验证时就不会再报错:
public class Workflow { [JsonIgnore] [BindNever] public string Name { get; set; } public string Schedule { get; set; } // ... }
方案2:将Name改为可空类型(如果启用了Nullable参考类型)
如果你的项目启用了Nullable参考类型,string默认是非可空的,模型验证会认为Name必须有值。把它改成string?即可消除必填校验:
public class Workflow { [JsonIgnore] public string? Name { get; set; } public string Schedule { get; set; } // ... }
补充说明
即使你在请求体里传入name参数,因为[JsonIgnore]的存在,这个值不会被反序列化到Name属性里,所以Name依然是null,模型验证还是会触发错误。上面的两种方案都能从根本上解决这个问题,不需要重构请求体类。
内容的提问来源于stack exchange,提问作者t3chb0t
相关产品推荐
相关产品推荐

