我正在从事.NET Core Web API项目,我有一些数据模型和实现的数据注释。
在更新用户配置文件时,用户可以在API JSON主体中输入所有字段或仅输入部分字段。
只有在API JSON中提供了特定字段时,我才能检查和应用数据注释。
注意:用户Id无法更新,仅供参考。
在下面的模型中,我有4个字段,只有用户Id必须在API JSON中提供,其余所有字段都可以在更新时在JSON中输入。
条件:
-
如果API JSON中提供了任何字段,则该字段不应为NULL或空值
-
如果除了
user_id
之外没有提供任何字段,它可以忽略并检查所提供字段的null注释。
我知道我们可以通过删除每列的Required()
来进行验证,并手动进行验证。
示例:
JSON1
{
"user_id":"XYZ-123"
}
预期结果:由于未提供可选字段,因此应接受并通过验证
示例:
JSON2
{
"user_id":"XYZ-123",
"work_phone":"+91-987654320"
}
预期结果:由于只提供工作电话,因此应接受并通过验证
数据模型:
public class UserDetails
{
[Required(AllowEmptyStrings = false, ErrorMessage = "The user_id field is required.")]
[JsonProperty("user_id")]
public string? UserId{ get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "The home_phone field is required.")]
[JsonProperty("home_phone")]
public string? HomePhone { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "The work_phone field is required.")]
[JsonProperty("work_phone")]
public string? WorkPhone { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "The mobile_phone field is required.")]
[JsonProperty("mobile_phone")]
public string? MobilePhone { get; set; }
}
如果不去掉Required()
属性,我认为这是不可能的。必需的是视图的数据注释。视图将要求它在接受表单帖子之前具有值。
如果你想在某些情况下成为必备品,你可以参考这篇文章。DrCopyPaste的答案使用的RequiredIf()
属性可能会对您有所帮助。