json 在ASP.NET Core中处理必需的可空属性

nwlqm0z1  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(105)

在ASP.NET Core中,我在模型的某些可空属性上使用[Required]属性。我希望这些属性总是在传入的JSON中提供,即使它们的值为null。因此,如果JSON有效负载中省略了一个属性,则应将其视为验证错误,但如果该属性提供了空值,则应将其视为有效。
例如,给定模型:

public class SampleModel
{
    [Required]
    public int? SomeProperty { get; set; }
}

下面的JSON应该是有效的:

{
    "SomeProperty": null
}

但由于省略了SomeProperty,这应该是无效的:

{}

看起来使用[Required]属性不是正确的方法,因为它验证了属性值不是null。我可以编写自己的模型验证,使用递归和反射来验证模型,但这似乎不是处理这个问题的正确方法。
在ASP.NETCore中实现此行为的最佳和最简单的方法是什么?

zour9fqk

zour9fqk1#

据我所知,你可以在实体上添加[JsonObject(ItemRequired = Required.AllowNull)]属性
调用builder.Services.AddControllers().AddNewtonsoftJson();在你程序中.cs:
实体:

[JsonObject(ItemRequired = Required.AllowNull)]
public class MyEntity
{
    public int Id { get; set; }
    
    public string? Prop1 { get; set;}

    public string? Prop2 { get; set;}

    public string? Prop3 { get; set;}
}

测试结果:

相关问题