I'm using DataAnnotations for validation. Built-in MS annotation such as [RequiredAttribute] works fine but custom annotation are firing and validating properly. However, the cell aren't getting the red border, only the error message tooltip. Any idea why?
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class MustBeUniquePostalCodeAttribute : ValidationAttribute
{
private bool v;
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DcfItemViewModel instance = validationContext.ObjectInstance as DcfItemViewModel;
v = true;
if (instance.isNew)
{
string postalCode = instance.PostalCode;
IList<Dcf> dcfList = instance.Parent as IList<Dcf>;
Dcf dcfEntity = instance.dcfEntity;
bool exists = dcfList.Any(d => !d.Equals(dcfEntity) && String.Equals(postalCode, d.PostalCode, StringComparison.OrdinalIgnoreCase));
if (exists)
{
v = false;
return new ValidationResult("Value must be unique");
}
}
return ValidationResult.Success;
}
public override bool IsValid(object value)
{
return v;
}
}
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class MustBeUniquePostalCodeAttribute : ValidationAttribute
{
private bool v;
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DcfItemViewModel instance = validationContext.ObjectInstance as DcfItemViewModel;
v = true;
if (instance.isNew)
{
string postalCode = instance.PostalCode;
IList<Dcf> dcfList = instance.Parent as IList<Dcf>;
Dcf dcfEntity = instance.dcfEntity;
bool exists = dcfList.Any(d => !d.Equals(dcfEntity) && String.Equals(postalCode, d.PostalCode, StringComparison.OrdinalIgnoreCase));
if (exists)
{
v = false;
return new ValidationResult("Value must be unique");
}
}
return ValidationResult.Success;
}
public override bool IsValid(object value)
{
return v;
}
}