本文演示Enterprise Library – Validation Application Block 验证管理模块的使用,练习使用配置文件,而不是attribute来指定验证规则(validation rules)。本文由
http://blog.entlib.com 开源ASP.NET博客平台小组根据EntLib HOL手册编译提供,欢迎交流。
练习五:通过配置文件来指定验证规则
下面的操作可以在练习四的基础上继续操作,删除Customer和Address类中validation attributes,或者直接打开\Enterprise Library 4.1 HOL\CS\Validation\Labs\Lab05\Before目录下的ValidationHOL.sln项目文件。该Solution包含有两个项目,分别为ValidationHOL.BusinessLogic和ValidationHOL。
1. 创建配置文件
为ValidationHOL项目添加配置文件app.config。
2. 编译Solution
编译Solution的目的是后续的一些步骤需要装载应用程序的dll。
3. 使用EntLib的配置编辑工具,为配置文件添加验证配置(validation configuration)
首先,为app.config配置文件添加Validation Application Block,如下图所示。
![Validation_5_1.gif](https://i-blog.csdnimg.cn/blog_migrate/97b21f116a4760c7f3820b84966eeae2.png)
4. 为Customer类添加Validation配置
(1)右键点击Validation Application Block节点,选择New | Type,为Customer类型添加一个新的节点,如下图所示。
![Validation_5_2.gif](https://i-blog.csdnimg.cn/blog_migrate/8363e0d5645a564be7912e89c126d4da.png)
在弹出的Type Selector对话框中,选择Load from File按钮,然后找到上一步编译生成的ValidationHOL.BusinessLogic.dll文件(因为该文件包含有Customer类)。在Filter文本框中,输入Customer,这样可以方便找到ValidationHOL.BusinessLogic.dll中包含的Customer类,如下图所示。
![Validation_5_3.gif](https://i-blog.csdnimg.cn/blog_migrate/b7fb7a597cce3ca60634cd2de91504ed.png)
(2)为Customer类型添加一个新的Rule Set,并设置Customer类型的默认Rule Set。
右键点击Customer节点,添加一个新的Rule Set,如下图所示。
![Validation_5_4.gif](https://i-blog.csdnimg.cn/blog_migrate/1b5b06cbaf61861c136278517ed1851c.png)
选择Rule Set节点,设置Name属性为Default,如下图所示。
![Validation_5_5.gif](https://i-blog.csdnimg.cn/blog_migrate/56021481390e88d0926242db958b6757.png)
然后点击Customer节点,设置DefaultRule属性为Default,也就是上一步新增的Rule Set,如下图所示。
![Validation_5_6.gif](https://i-blog.csdnimg.cn/blog_migrate/bffcadc4312da99427dfd073962c4b2e.png)
(3)为Customer类型添加新的节点
右键点击Default节点,选择New | Choose members,如下图所示。
![Validation_5_7.gif](https://i-blog.csdnimg.cn/blog_migrate/45d03af6be2619609a9672fee0ce274a.png)
在弹出的Member Selector对话框中,选择Customer类的所有属性,如下图所示。
![Validation_5_8.gif](https://i-blog.csdnimg.cn/blog_migrate/3337805632cfa23e1f9b8b10eefc658c.png)
(4)右键点击FirstName节点,选择New | String Length Validator,为FirstName属性设置String Length Validator,如下图所示。
![Validation_5_9.gif](https://i-blog.csdnimg.cn/blog_migrate/c368e69262e7e1976742000fc7687338.png)
选择String Length Validator节点,设置如下属性:
LowerBound=1
LowerBoundType=Inclusive
UpperBound=25
如下图所示。
![Validation_5_10.gif](https://i-blog.csdnimg.cn/blog_migrate/b4be4cfd24b82da00b843bdc76be3b13.png)
重复上述FirstName的操作,为LastName设置String Length Validator,并设置如下属性:
LowerBound=1
LowerBoundType=Inclusive
UpperBound=25
继续为SSN属性设置Regular Expression Validator,并设置如下属性:
Pattern=^\d\d\d-\d\d-\d\d\d\d$
继续为Address属性设置Object Validator,不需要设置任何属性。
5. 按照为Customer类设置Validation配置的步骤,为Address类设置Validation配置。
首先添加Address类型,然后添加新的Rule Set,并重命名为Default,设置该Rule Set为Address类型的默认Rule Set。
有点不同的是为City属性设置And Composite Validator,如下图所示,点击City属性,选择New | And Composite Validator。
![Validation_5_11.gif](https://i-blog.csdnimg.cn/blog_migrate/a9576fd35a999246ac59e5b9554084c8.png)
然后点击 Add Composite Validator节点,按照前面一致的步骤,添加String Length Validator和Contains Character Validator,并为String Length Validator设置如下属性:
LowerBound=1
LowerBoundType=Inclusive
UpperBound=30
为Contains Character Validator设置如下属性:
CharacterSet=sea
ContainsCharacters=All
继续为State属性设置String Length Validator:
LowerBound=2
LowerBoundType=Inclusive
UpperBound=2
为StreetAddress属性设置String Length Validator:
LowerBound=1
LowerBoundType=Inclusive
UpperBound=50
为ZipCode属性设置Regular Expression Validator:
Pattern=^\d{5}$
上述操作完成后,配置文件如下图所示,记得要保存配置文件。
![Validation_5_12.gif](https://i-blog.csdnimg.cn/blog_migrate/705f9e7e59da06bd98d0d7a08e87d795.png)
6. 运行范例程序,检查配置文件中的Validation 配置是否生效
运行范例程序,在数据录入窗口中,不输入任何信息,点击Accept按钮,将显示错误验证错误信息,如下图所示。
![Validation_5_13.gif](https://i-blog.csdnimg.cn/blog_migrate/3774f522b2aec25f3822c49892df6f82.png)
http://www.entlib.com专业ASP.NET电子商务平台小组,欢迎你继续访问Validation Application Block学习手册。
参考文档:
Validation Application Block Hands-On Labs for Enterprise Library