在ASP.NET Core中,我在模型的某些可空属性上使用[Required]
属性。我希望这些属性总是在传入的JSON中提供,即使它们的值为null。因此,如果JSON有效负载中省略了一个属性,则应将其视为验证错误,但如果该属性提供了空值,则应将其视为有效。
例如,给定模型:
public class SampleModel
{
[Required]
public int? SomeProperty { get; set; }
}
下面的JSON应该是有效的:
{
"SomeProperty": null
}
但由于省略了SomeProperty,这应该是无效的:
{}
看起来使用[Required]
属性不是正确的方法,因为它验证了属性值不是null。我可以编写自己的模型验证,使用递归和反射来验证模型,但这似乎不是处理这个问题的正确方法。
在ASP.NETCore中实现此行为的最佳和最简单的方法是什么?
1条答案
按热度按时间zour9fqk1#
据我所知,你可以在实体上添加
[JsonObject(ItemRequired = Required.AllowNull)]
属性调用
builder.Services.AddControllers().AddNewtonsoftJson()
;在你程序中.cs:实体:
测试结果: