ASP.NET MVC 扩展数据验证 转

此文只做记录服务器

 1 public class MaxWordsAttribute : ValidationAttribute
 2     {
 3 
 4         public MaxWordsAttribute(int maxWords)
 5             : base("{0} 字符串过长")
 6         {
 7             _maxWords = maxWords;
 8         }
 9         private readonly int _maxWords;
10 
11         protected override ValidationResult IsValid(object value, ValidationContext validationContext)
12         {
13             if (value != null)
14             {
15                 var valueAsString = value.ToString();
16                 if (valueAsString.Split(' ').Length > _maxWords)
17                 {
18                     var errorMessage = FormatErrorMessage(
19                     validationContext.DisplayName);
20                     return new ValidationResult(errorMessage);
21                 }
22             }
23             return ValidationResult.Success;
24         }
25     }

其实我我的是将数据验证的这些特性分为两类,一类是真正的进行验证,Required,Range,StringLength,Display,Remote,RegularExpression,Compare,Range。这些特性是真正会进行验证的Attribute。另外几个Display,ReadOnly,DataType,DisplayFormat,ScaffoldColumn等和字段的显示有关,没有真正的和服务器端进行验证。框架

咱们可使用MVC提供的各类验证特性,那么咱们是否能够本身来定义自定义特性验证呢。MVC有着巨大的可扩展性,咱们也能够本身进行扩展,有两种扩展方式,一种就是能够重复使用的和MVC框架中验证,只要继承自ValidationAttribute 就能够实现重复使用的验证特性,另外一种就是内包含的模式,它是只验证特定的Model,继承自IValidatableObject能够实现字包含的验证。ide

可重复使用的验证特性,继承自ValidationAttribute。ui

相关文章
相关标签/搜索