• 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可以实现字包含的验证。

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

  • 相关阅读:
    北京之行
    csharp进界
    医院OA系统新思考
    茗洋博客
    monkey主要参数详解
    使用python判断Android自动化的渠道包是否全部打完
    手机连接mac电脑无法使用adb命令解决方法
    Python正则表达式指南
    Mac基本命令大全
    Mac之vim普通命令使用
  • 原文地址:https://www.cnblogs.com/stalwart/p/3299112.html
Copyright © 2020-2023  润新知