csharp 验证属性,用于确保输入的最小位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 验证属性,用于确保输入的最小位数相关的知识,希望对你有一定的参考价值。

public class MinDigitsIncluded : ValidationAttribute, IClientValidatable
{
    private const string DefaultErrorMessage = "{0} must contain at least {1} digits.";
    public int MinDigits { get; private set; }

    public MinDigitsIncluded(int minDigits) : base(DefaultErrorMessage)
    {
        MinDigits = minDigits;
    }

    public override string FormatErrorMessage(string name)
    {
        return string.Format(ErrorMessageString, name, MinDigits);
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var val = value as string;
        if (val != null)
        {
            var invalid = val.ToCharArray().Count(IsDigit) < MinDigits;
            if (!invalid)
            {
                return ValidationResult.Success;
            }
        }
        return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var clientValidationRule = new ModelClientValidationRule()
        {
            ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
            ValidationType = "mindigitsincluded"
        };
        clientValidationRule.ValidationParameters.Add("mindigits", MinDigits);
        return new[] { clientValidationRule };
    }

    private static bool IsDigit(char input)
    {
        var digits = new[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        return digits.Contains(input);
    }
}

以上是关于csharp 验证属性,用于确保输入的最小位数的主要内容,如果未能解决你的问题,请参考以下文章

csharp 验证可用于web api的AntiForgery令牌属性

csharp 自定义数据注释验证属性,用于验证数据是两个字符的美国州名缩写。

csharp 数据注释属性,用于验证字符串是否为有效的XML

AngularJS复习------表单验证

Java Script学习 6(转)

最小最大价格范围验证不适用于 jquery.validate.js