Enterprise Library Validation Application Block Step by Step (3)

来源:互联网 发布:世界大数据公司排名 编辑:程序博客网 时间:2024/04/30 11:17

Demo3  使用客户自定义验证

客户自定义验证是程序开发人员对Validation Application Block的功能的扩展。

任务1:搭建用于验证的运行环境

1.        新建项目ValidationApp.CustomerValidation,右键单击解决方案,指向“添加“,选择“新建项目”,在名称栏里输入ValidationApp.CustomerValidation如图3.1

1

3.1 新建项目

2.        添加引用,如前面的实验一样,添加Microsoft.Practices.EnterpriseLibrary.Validation的引用。

3.        删除项目ValidationApp.CustomerValidation默认产生的文件类文件Class1

任务2:添加自定义的验证类。

这里所指的自定义验证类是继承于Validator类的,并且重载了Validator类的一些方法。

1.    增加一个新类IDValidator。右键单击项目ValidationApp.CustomerValidation,指向“添加”,选择“新建项”。然后,选择“类”,在名称栏输入IDValidator,如图3.2

2

3.2 添加类文件

2.    使用Using语句向 IDValidator类添加必要的引用。

using System.Text.RegularExpressions;

usingMicrosoft.Practices.EnterpriseLibrary.Validation;

usingMicrosoft.Practices.EnterpriseLibrary.Validation.Validators;

3.     IDValidation类添加如下代码。主要定义了两个构造函数和一个DoValidate重载函数。这些代码可以根据验证的需要改动,是自己定义的。

public class IDValidator:Validator<string>

    {

        publicIDValidator(string tag)

            : this(tag, false)

        {       }

        publicIDValidator(string tag, bool ignoreHypens)

            : base(string.Empty,tag)

        {

            this.ignoreHypens= ignoreHypens;

        }

        privatebool ignoreHypens;

        protectedoverride string  DefaultMessageTemplate

        {

               get{ throw new NotImplementedException(); }

         }

        staticRegex IDRegex = newRegex(@"^[0-9]*[1-9][0-9]*$");

        protectedoverride void  DoValidate(stringobjectToValidate, object currentTarget, string key, ValidationResultsvalidationResults)

        {

            Matchmatch = IDRegex.Match(objectToValidate);

            if((objectToValidate.Length<0)||(objectToValidate.Length >= 18))

            {

                if (!match.Success)

                {

                   LogValidationResult(validationResults, "身份证号必须是数字", currentTarget, key);

                }

            }

            else

            {

                LogValidationResult(validationResults,"身份证号码必须是18", currentTarget, key);

            }

        }

}

任务3:添加验证属性。

1.    IDValiation.CustomerValidation项目添加新类IDValidatorAttribute

2.    添加引用。

usingMicrosoft.Practices.EnterpriseLibrary.Validation;

using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

3.    按照下面的格式添加代码。

public class IDValidatorAttribute:ValidatorAttribute

        {

            protectedoverride ValidatorDoCreateValidator(Type targetType)

            {

                return new IDValidator(this.Tag);

             }

         }

任务4:在项目中使用自定义验证

   通过以上实验的配置。现在,我们就可以像使用Validation Application Block自带的验证方法一样使用[IDValidator]。不过,本例的其他的验证还是需要配置的,这里就不一一介绍了。下面我们开始使用[IDValidator]

1.        ValidationApp.UserValidation项目中添加对ValidationApp.Customer项目的引用。展开ValidationApp.UserValidation项目的“引用文件夹”,右键单击“引用”,选择“添加引用”,然后指向“项目”菜单,选择ValidationApp.Customer项目,单击“添加”。

2.        打开User.cs文件。

3.        使用using指令添加引用。

using ValidationApp.CustomerValidation;

4.        更新User.cs文件。

    public class User

    {

        publicstring UserName{ get;set; }

        publicstring password{ get;set; }

        [IDValidator]

        publicstring IDcard{ get;set; }

        publicstring email{ get;set; }

   }

任务5:验证。

3

原创粉丝点击