public class MaxWordsAttribute : ValidationAttribute { public MaxWordsAttribute() : base(() => { return "{0} has too many words."; }) { } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { //return base.IsValid(value, validationContext); if (value != null) { var valueAsString = value.ToString().Split(' '); if (valueAsString.Length > _maxWords) { var errorMessage = FormatErrorMessage(validationContext.DisplayName); return new ValidationResult(errorMessage); } } return ValidationResult.Success; } public MaxWordsAttribute(int word) { _maxWords = word; } private readonly int _maxWords; }
[Required]
[StringLength(160, MinimumLength=3)]
[MaxWords(10)]
public virtual string LastName { get; set; }