//所有的特性必须要继承ValidationAttribute
public class MaxWordsAttribute : ValidationAttribute
{
//该参数是验证条件【构造函数里面可以增加验证条件】
private readonly int _maxWords;
public MaxWordsAttribute(int maxWords)
: base("{0} 输入的姓氏单词数量过大!")//提供默认的错误提示消息
{
_maxWords = maxWords;//显示最大单词数量
}
/// <summary>
///
/// </summary>
/// <param name="value">当前model某成员【属性】的值</param>
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string valueAsString = value.ToString();
if (valueAsString.Split(' ').Length > _maxWords)
{
//当前model某成员的名称【即:属性名称】
//这种方式有利于 程序员在使用特性的时候可以自定义错误提示消息【ErroMessage=...】
string erroMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(erroMessage);
}
}
//验证通过了就直接返回 ValidationResult.Success;
return ValidationResult.Success;
}
}