Reputation: 139
Can I have a different validation messages depending on the class referencing my model class...
for e.g.
public class AdviceUnit
{
public Client MainClient {get;set;}
public Client PartnerClient {get;set;}
public List<Investments> JointInvestments {get;set;}
}
public class Client
{
public Guid Id {get;set;}
[Required(ErrorMessage = "ERROR MESSAGE but a different ")]
public string FirstName {get;set;}
[Required(ErrorMessage = "client last name is missing")]
public string LastName {get;set;}
[Required(ErrorMessage = "client date of birth is missing")]
public DateTime DateOfBirth {get;set;}
}
What I really want is a different validation error message for main & partner client.
for e.g.
[Required(ErrorMessage = "main client first name is missing")]
[Required(ErrorMessage = "partner client first name is missing")]
My view is bound to AdviceUnit object.
Upvotes: 0
Views: 355
Reputation: 224
Like BDH has said (sorry I wasn't stealing your answer, credit goes to BDH for posting the comment first), you could implement a custom required validation attribute.
As a proof of concept:
public string ClientType {get; set;}
public class CustomRequiredAttribute : RequiredAttribute { protected override ValidationResult IsValid (object value, ValidationContext validationContext) { var instance = validationContext.ObjectInstance; var instancePropertyValue = instance.GetType().GetProperty("ClientType").GetValue(instance, null); return new ValidationResult(ErrorMessage.Replace("[replaceText]" ,instancePropertyValue.ToString())); } }
[CustomRequired(ErrorMessage = "[replaceText] client first name is missing ")] public string FirstName {get;set;}
Only caveat is that the ClientType property must be set before posting/validation occurs.
Upvotes: 1