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 ));
            }
           
        }
    }
    

      

  • 相关阅读:
    软件构架实践_阅读笔记04(-11)
    软件构架实践_阅读笔记03(7-9)
    Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
    Tsinsen-1487:分配游戏【树状数组】
    Tsinsen-1486:树【Trie树 + 点分治】
    Splay初步【bzoj1503】
    Treap初步
    [BZOJ3207] 花神的嘲讽计划Ⅰ
    可持久化Trie树初步
    可持久化线段树初步
  • 原文地址:https://www.cnblogs.com/huangzelin/p/4510930.html
Copyright © 2011-2022 走看看