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

相關文章
相關標籤/搜索