本文演示Enterprise Library – Validation Application Block 验证管理模块的使用,练习创建多个Rule Sets在不同场景下使用不同的Validation规则来进行数据验证。本文由http://blog.entlib.com 开源ASP.NET博客平台小组根据EntLib HOL手册编译提供,欢迎交流。
 
练习六:创建并使用多个Rule Sets
下面的操作可以在练习五的基础上继续操作,或者直接打开\Enterprise Library 4.1 HOL\CS\Validation\Labs\Lab06\Before目录下的ValidationHOL.sln项目文件。该Solution包含有两个项目,分别为ValidationHOL.BusinessLogic和ValidationHOL。
 
1. 创建和配置一个新的、非默认的Rule Set
(1)使用EntLib的配置管理工具打开app.config文件,右键点击Customer节点,选择 New | Rule Set,创建一个新的Rule Set,命名为Alternative。
(2)选择Alternative节点,和上一篇操作一样,这里只添加2个属性,分别为FirstName和LastName。
设置FirstName的String Length Validator的相关属性:
LowerBound=1
LowerBoundType=Inclusive
UpperBound=20
 
继续设置LastName的DomainValidator的相关属性,选择Domain属性,点击相应的按钮,弹出DomainValue Collection Editor对话框。
 
 
在该对话框中,分别添加EntLib, Smith, Jones, Doe等等四个DomainValue,这样限定该属性必须输入指定的属性值,如下图所示。记得操作完成后,需要保存配置文件。
 
 
2. 添加一个CheckBox到UI界面上,用来选择使用哪一个Rule Set
打开MainForm界面,添加一个新的CheckBox,设置如下属性:
Name = alternativeValidation
Text = alternative
 
如下图所示。
 
 
3. 更新MainForm类中的acceptButton_Click方法,由CheckBox决定采用哪一个Rule Set对Customer对象实例进行验证。具体代码如下。
        private void acceptButton_Click(object sender, EventArgs e)
        {
            Customer customer = new Customer
            {
                FirstName = firstNameTextBox.Text,
                LastName = lastNameTextBox.Text,
                SSN = ssnTextBox.Text,
                Address = new Address
                {
                    StreetAddress = streetAddressTextBox.Text,
                    City = cityTextBox.Text,
                    State = stateComboBox.Text,
                    ZipCode = zipCodeTextBox.Text
                }
            };
 
            ValidationResults results =
                this.alternativeValidation.Checked
                    ? Validation.Validate(customer, "Alternative")
                    : Validation.Validate(customer);
            if (!results.IsValid)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("Customer is not valid:");
                foreach (ValidationResult result in results)
                {
                    builder.AppendLine(
                        string.Format(
                            CultureInfo.CurrentCulture,
                            "{0}: {1}",
                            result.Key,
                            result.Message));
                }
                MessageBox.Show(
                    this,
                    builder.ToString(),
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return;
            }
 
            MessageBox.Show(
                this,
                "Processing customer '" + customer.FirstName + "'",
                "Working",
                MessageBoxButtons.OK,
                MessageBoxIcon.Information);
        }
 
4. 运行范例程序,检查是否使用了不同的Rule Set
如果不选择CheckBox,将采用上一节定义的Default Rule Set对Customer对象实例进行验证,结果和上一节是一样的。
 
如果选择Alternative CheckBox,将采用本节新定义的alternative Rule Set,弹出的消息对话框如下图所示。
 
 
http://www.entlib.com专业ASP.NET电子商务平台小组,欢迎你继续访问Validation Application Block学习手册。
 
参考文档:
Validation Application Block Hands-On Labs for Enterprise Library
posted on 2010-09-15 10:00  vibratea  阅读(260)  评论(0编辑  收藏  举报