I am working on .NET Core Web API project, I have few data models and implemented data annotations.
While updating user profile, user can enter all fields or only some fields in API JSON body.
How do I check and apply data annotation only if specific field is provided in API JSON.
Note: User Id cannot be updated , it is only for reference.
In below model, I have 4 fields, only User Id is mandatory to be provided in API JSON rest all fields are optional to be entered in JSON while updating.
Conditions:
If any field is provided in API JSON, then it should not be NULL or empty value
If any field is not provided except
user_id
, it can ignore and do check null annotation for the fields provided.
I know we can validate by removing Required()
for each column and validate manually.
Example:
JSON1
{
"user_id":"XYZ-123"
}
Expected Result: Since no optional fields provided, it should Accept and pass validation
Example:
JSON2
{
"user_id":"XYZ-123",
"work_phone":"+91-987654320"
}
Expected Result: Since only work phone is provided, it should Accept and pass validation
Data Model:
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; }
}