Demo1 在类代码中实现 Validation Application Block 的功能
步骤
任务 1 :新建一个 windows Form 项目。
从开始菜单选择“所有程序”,指向“ Microsoft Visual Studio 2008” , 单击打开。在打开 VS 界面,依次选择“文件 --- 新建 --- 项目”,在弹出的窗体中选择“ Windows 窗体应用程序”,输入名称为“ ValidationApp ”,单击“确定”。如图 1.1 所示。
图 1.1 新建项目
任务 2 :设计界面。
从工具箱托 4 个 TextBox,4 个 label 和一个 button 按钮到窗体上,把 textBox 的 Name 分别设置为 txtName,txtPwd,txtID,txtEmail, 对应的四个 Label 控件的名称为用户名、密码、身份证号、邮件。 Button 按钮的 name 属性设置为 btnOK, 名称改为确认。将窗体的名称改为用户登录, name 属性设置为 FormLogin 。如图 1.2 。
图 1.2 界面设计
任务 3 :添加 User 类 。
右键单击项目 ValidationApp ,选择 ” 添加 -- à 新建项 ” 。在弹出的窗体中选择类文件,将名称更改为 User.cs ,然后单击添加。如图 1.3 。
图 1.3 添加 User 类
将 User 类访问修饰符设置为 Public, 并向 User 类中添加以下代码。
namespace ValidationApp
{
public class User
{
public string UserName{ get ; set ; }
public string password{ get ; set ; }
public string IDcard{ get ; set ; }
public string email{ get ; set ; }
}
}
任务4 :添加引用。
要使用Enterprise library 的标准Validation Application Block 来验证,需添加Microsoft.Practices.EnterpriseLibrary.Validation 的引用。
右键单击引用文件夹,指向添加引用,单击浏览,按如下相对路径“../application/lib/ ”选择Microsoft.Practices.EnterpriseLibrary.Validation, 然后按下确定。如图1.5 。
图1.5 添加引用
使用 using 指令将引用添加到 user 类中。
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
使用 using 指令将引用添加到 FormLogin.cs 文件中。
using System.Globalization;
using Microsoft.Practices.EnterpriseLibrary.Validation;
任务5: 添加必要的验证代码。
1. 向formLogin 窗体添加如下代码,双击“确认”按钮, 添加btnOK 的处理代码。
private void btnOK_Click(object sender, EventArgs e)
{
User user = new User
{
UserName =txtName .Text ,
password =txtPwd .Text ,
IDcard =txtID .Text ,
email =txtEmail .Text
};
ValidationResults results = Validation .Validate(user);
if (!results.IsValid)
{
StringBuilder builder = new StringBuilder ();
builder.AppendLine("user is no 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 user '" + user .UserName + "'" ,
"Working" ,
MessageBoxButtons .OK,
MessageBoxIcon .Information);
}
2. 向User.cs 类添加验证的代码。
public class User
{
[NotNullValidator ]
public string UserName{ get ; set ; } [ValidatorComposition (Microsoft.Practices.EnterpriseLibrary.Validation.CompositionType .And )]
[StringLengthValidator (6,12)]
[NotNullValidator ]
[RegexValidator (@"^(-?/d+[.]?/d+)$" )]
public string password{ get ; set ; }
[StringLengthValidator (18,18)]
public string IDcard{ get ; set ; }
[RegexValidator (@"^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?$" )]
public string email{ get ; set ; }
}
运行界面如下图1.6 。
图 1.6 运行界面
我们可以看到,验证后的消息都是由系统自动产生的。在这里,我们的下一个任务就是定义自己的验证消息。
任务 6 :定义客户验证消息。
1. 创建资源文件。(用于存储我们定义的消息)。
右键单击 ValidationApp 项目,选择属性。在打开的窗口中选择“资源”,并输入验证消息。如图 1.7 创建默认的资源文件。
验证消息如下表:
名称 | 值 |
用户名 | 用户名不能为空 |
密码 | 密码由 6—12 位的字母和数字组成 |
身份证号码 | 由 18 位的数字组成 |
电子邮件 | 必须是正确的电子邮件的格式 |
如图 1.7 创建默认的资源文件
3. 使用资源文件更新 User 类的验证消息。
首先使用 using 指令添加引用到 user.cs 类中。
using ValidationApp.Properties ;
更改代码如下所示:
public class User
{
[ValidatorComposition (Microsoft.Practices.EnterpriseLibrary.Validation.CompositionType .And)]
[NotNullValidator ]
[StringLengthValidator (1,10,MessageTemplateResourceType =typeof (Resources ),MessageTemplateResourceName =" 用户名" )]
public string UserName{ get ; set ; }
[ValidatorComposition (Microsoft.Practices.EnterpriseLibrary.Validation.CompositionType .And)]
[StringLengthValidator (6, 12, MessageTemplateResourceType = typeof (Resources ), MessageTemplateResourceName = " 密码" )]
[RegexValidator (@"^[A-Za-z0-9]+$" , MessageTemplateResourceType = typeof (Resources ), MessageTemplateResourceName = " 密码" )]
public string password{ get ; set ; }
[ValidatorComposition (Microsoft.Practices.EnterpriseLibrary.Validation.CompositionType .And )]
[StringLengthValidator (18, 18, MessageTemplateResourceType = typeof (Resources ), MessageTemplateResourceName = " 身份证号码" )]
[RegexValidator (@"^[0-9]*[1-9][0-9]*$" , MessageTemplateResourceType = typeof (Resources ), MessageTemplateResourceName = " 身份证号码" )]
public string IDcard{ get ; set ; }
[RegexValidator (@"^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?$" ,MessageTemplateResourceType =typeof (Resources ),MessageTemplateResourceName =" 电子邮件" )]
public string email{ get ; set ; }
}
任务7 :验证,如图1.8 。
到这里,程序已经实现了验证的功能。在文件夹中可以找到已成的文件,可以对照运行,测试。