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; }