验证器和输入验证错误

时间:2014-05-22 10:05:34

标签: c# .net asp.net-mvc validation

我有一个绑定到模型的视图,

当我在模型中的属性上使用内置Validator时,例如[EmailAddress],如果我写了一些无效的内容,则html标记会获得类input-validation-error。这允许我通过CSS显示红色。这很有效。

但是当我使用自定义验证器时,例如:

public class CONT_RU06Attribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value != null)
        {
            int value = int.Parse(value.ToString());

            if (value < 2 || value > 6)                
                return new ValidationResult("Value must be between 2 and 6");
        }

        return ValidationResult.Success;
    }
}

绑定的html标记没有获得输入验证错误类... 我该怎么办?

1 个答案:

答案 0 :(得分:2)

您还需要实施 IClientValidatable

public class CONT_RU06Attribute : ValidationAttribute, IClientValidatable
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value != null)
        {
            int value = int.Parse(value.ToString());

            if (value < 2 || value > 6)                
                return new ValidationResult("Value must be between 2 and 6");
        }

        return ValidationResult.Success;
    }
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());           
        rule.ValidationType = "range";
        yield return rule;
    }

}

Check this article