Вам нужно будет создать свой собственный атрибут, унаследованный от CompareAttribute
, и переопределить метод IsValid
, например:
public class CompareStringCaseInsensitiveAttribute : CompareAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
PropertyInfo otherPropertyInfo = validationContext.ObjectType.GetProperty(OtherProperty);
if (otherPropertyInfo == null)
return new ValidationResult(String.Format(CultureInfo.CurrentCulture, MvcResources.CompareAttribute_UnknownProperty, OtherProperty));
var otherPropertyStringValue =
otherPropertyInfo.GetValue(validationContext.ObjectInstance, null).ToString().ToLowerInvariant();
if (!Equals(value.ToString().ToLowerInvariant(), otherPropertyStringValue))
return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
return null;
}
}
Затем измените [Compare("Email", ErrorMessage = "E-mail and Repeat e-mail must be identically entered.")]
на:
[CompareStringCaseInsensitive("Email", ErrorMessage = "E-mail and Repeat e-mail must be identically entered.")]