zoukankan      html  css  js  c++  java
  • entlib验证组件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Microsoft.Practices.EnterpriseLibrary.Validation;
    using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
    
    
    //https://msdn.microsoft.com/zh-cn/library/ff953181(v=pandp.50).aspx 企业库总目录
    //https://msdn.microsoft.com/zh-cn/library/hh315829(v=pandp.50).aspx 企业库验证组件
    
    
    /*
     验证程序的 Message 属性实际上是一个模板,而不只是一个简单的可显示的文本字符串。
     * 在块将单个 ValidationResult 添加到它检测到的每个验证错误的 ValidationResults 实例中时,
     * 它分析 Message 属性的值,该属性查找将用检测到错误的验证程序的特定属性值来替换的标记。
    注入到占位符标记中的值和使用的标记数量取决于验证程序的类型(虽然有三个通用于所有验证程序的标记)。
     * 标记 {0} 将被正在验证的对象的值替换(确保在显示或使用该值之前先转义该值,以防止注入式攻击)。
     * 标记 {1} 将包含正在验证的成员的名称(如果可用),并等同于验证程序的 Key 属性。标记 {2) 将包含验证程序的 Tag 属性的值。
    其余标记取决于相应的验证程序类型。例如,对于“包含字符”验证程序,标记 {3} 和 {4} 将要检查的字符和 ContainsCharacters 值(All 或 Any)。
     * 对于范围验证程序(例如“字符串长度”验证程序),标记 {3} 到 {6} 将包含您为验证程序指定的下限和上限的值和绑定类型(Inclusive、Exclusive 或 Ignore)。例如,可以定义如下“字符串长度”验证程序:
    [StringLengthValidator(5, RangeBoundaryType.Inclusive, 20, 
           RangeBoundaryType.Inclusive,
           MessageTemplate = "{1} must be between {3} and {5} characters.")]
     */
    namespace DPC.EntLib.Validation
    {
        class Program
        {
            static void Main(string[] args)
            {
                Validator<Person> personValidator
                    = ValidationFactory.CreateValidator<Person>();
                Person person = new Person();
                person.Name = "";
                person.Age = 110;
                ValidationResults valResults = personValidator.Validate(person);
    
                //personValidator.DoValidate(person,
                if (valResults.Count == 0)
                {
                    Console.WriteLine("验证通过...");
                }
                else
                {
                    foreach (var result in valResults)
                    {
                        Console.WriteLine(result.Message);
                    }
                }
                Console.ReadLine();
            }
        }
    
        [HasSelfValidation]
        public class Person
        {
            [StringLengthValidator(1,6,MessageTemplate="xxxx")]
            //[StringLength(4,MinimumLength = 1,ErrorMessage="姓名长度要介于1-4个字符")]
            public string Name { get; set; }
    
           [RangeValidator(0, RangeBoundaryType.Inclusive, 100, RangeBoundaryType.Inclusive, MessageTemplate = "字段{1}的值必须介于{3}-{5}之间")]
            public int Age { get; set; }
    
            [NotNullValidator(MessageTemplate ="zzzzzzz")]
            public int? Weight { get; set; }
    
            [SelfValidation()]
            public void DoValidate(ValidationResults results)
            {
                results.AddResult(new ValidationResult("自定义错误消息",this,"self","",null ));
            }
           
        }
    }
    

      

  • 相关阅读:
    react log
    valueOf()、toString()、toLocaleString()三个方法的区别
    git 多账号配置 mac和windows10 记录一下
    js执行顺序,Promise和async中的立即执行
    js事件冒泡及event的target和currentTarget的区别
    canvas 旋转时 中心点的坑
    uni app 在组件中操作 canvas 已踩坑
    js 预编译原理
    mixins 在装饰器 vue-property-decorator 中的使用
    js 面向对象和函数式编程
  • 原文地址:https://www.cnblogs.com/huangzelin/p/4510930.html
Copyright © 2011-2022 走看看