Pulse7
7/16/2017 - 8:18 AM

MaxWords custom validation annotation attribute

MaxWords custom validation annotation attribute

public class MaxWordsAttribute : ValidationAttribute
    {
        readonly int _maxWords;
        public MaxWordsAttribute(int maxWords) : base("{0} has too many words")
        {
            _maxWords = maxWords;
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                var valueAsString = value.ToString();
                if (valueAsString.Split().Length > _maxWords)
                {
                    var errorMessage = FormatErrorMessage(validationContext.DisplayName);
                    return new ValidationResult(errorMessage);
                }
            }
            return ValidationResult.Success;
        }
    }