说到AOP编程,可能大部分人是即熟悉又显得陌生。

    AOP的作用就是横切关注点,然后将分离后的关注点以面的形式来呈现,这是概念性的说法,举个列子来说明吧。

     比如说有个API接口处理场景是提交订单,在我们提交订单的时候,首先客户端要对用户提交的数据进行合法性验证,验证通过后,数据发送到服务端,因客户端一切操作都是不可信的,必然服务端在录入订单信息之前也需要对数据合法性进行验证。

    针对上述问题我们可以这样子来编码

    首先定义订单表单参数实体对象:

 

 1 /// <summary>
 2     /// Post表单参数
 3     /// </summary>
 4     public class FromOrderInfo
 5     {
 6         /// <summary>
 7         /// 商品名称
 8         /// </summary>
 9         public string ShopName { get; set; }
10         /// <summary>
11         /// 手机号
12         /// </summary>
13         [ValidateMobile(ErrorMessage = "请输入正确格式的手机号")]//自定义验证规则
14         public string Mobile { get; set; }
15         /// <summary>
16         /// Address
17         /// </summary>
18         [ValidateMaxLength(20,ErrorMessage = "Address字符超过指定长度")]
19         public string Address { get; set; }
20     } 
 

 在表单对象FromOrderInfo实体类里面有ValidateMobile和ValidateMaxLength验证类

接下来我们需要编写自定义ValidateMobile和ValidateMaxLength验证类

自定义验证如下:

 1 /// <summary>
 2     /// 验证字符长度是否超过指定长度
 3     /// </summary>
 4     public class ValidateMaxLengthAttribute : ValidationAttribute
 5     {
 6         private readonly int MaxLength;
 7 
 8         public ValidateMaxLengthAttribute(int maxLength)
 9             : base("{0}的字符太多了!")
10         {
11             MaxLength = maxLength;
12         }
13 
14         protected override ValidationResult IsValid(object value, ValidationContext validationContext)
15         {
16             if (value != null)
17             {
18                 string content = value.ToString();
19                 int leng = StringTool.GetStringLength(content);
20                 if (leng > MaxLength)
21                 {
22                     string errorMessage = FormatErrorMessage(validationContext.DisplayName);
23                     return new ValidationResult(errorMessage);
24                 }
25             }
26             return ValidationResult.Success;
27         }       
28     }
29 
30 /// <summary>
31    /// 验证手机号
32    /// </summary>
33    public class ValidateMobileAttribute : ValidationAttribute
34     {
35        public ValidateMobileAttribute()
36             : base("{0}应输入11位手机号!")
37         {
38         }
39        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
40        {
41            if (value != null)
42            {
43                string content = value.ToString();
44                if (!RegexTool.IsMobile(content))
45                {
46                    string errorMessage = FormatErrorMessage(validationContext.DisplayName);
47                    return new ValidationResult(errorMessage);
48                }
49            }
50            return ValidationResult.Success;
51        }
52     }
View Code

相关文章:

  • 2021-07-06
  • 2021-10-15
  • 2022-12-23
  • 2021-11-23
  • 2021-11-23
  • 2021-08-23
  • 2021-07-20
猜你喜欢
  • 2021-06-11
  • 2021-12-15
  • 2021-04-01
  • 2022-12-23
  • 2021-07-16
  • 2022-12-23
  • 2021-09-27
相关资源
相似解决方案