I have a required annotation on my model:
[Required(ErrorMessage = \"Please choose an option\")]
public bool? AnyDebts { get; set; }
I have
Take a look on this code.
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class RequiredIfAttribute : RequiredAttribute
{
public string PropertyName { get; set; }
public Enums.BasicOperationType BasicOperationType { get; set; }
public RequiredIfAttribute(string propertyName, Enums.BasicOperationType BasicOperationType)
{
this.PropertyName = propertyName;
this.BasicOperationType = BasicOperationType;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Type objectType = validationContext.ObjectType;
PropertyInfo[] neededProperties = objectType.GetProperties().Where(propertyInfo => propertyInfo.Name == PropertyName).ToArray();
if (Core.Helpers.EnumHelper.TryParse(Convert.ToInt16(neededProperties[0].GetValue(validationContext.ObjectInstance, null))) == BasicOperationType)
return base.IsValid(value, validationContext);
return base.IsValid(0, validationContext);
}
}