//所有的特性必须要继承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; } }