Enterprise Library Validation Application Block Step by Step (3)
Demo3 使用客戶自定義驗證
客戶自定義驗證是程式開發人員對Validation Application Block 的功能的擴充套件。
任務1 :搭建用於驗證的執行環境
1. 新建專案ValidationApp.CustomerValidation ,右鍵單擊解決方案,指向“新增“,選擇“新建專案”,在名稱欄裡輸入ValidationApp.CustomerValidation 如圖3.1
圖3.1 新建專案
2. 新增引用,如前面的實驗一樣,新增Microsoft.Practices.EnterpriseLibrary.Validation 的引用。
3. 刪除專案ValidationApp.CustomerValidation 預設產生的檔案類檔案Class1 。
任務2 :新增自定義的驗證類。
這裡所指的自定義驗證類是繼承於Validator 類的,並且過載了Validator 類的一些方法。
1. 增加一個新類IDValidator 。右鍵單擊專案ValidationApp.CustomerValidation ,指向“新增”,選擇“新建項”。然後,選擇“類”,在名稱欄輸入IDValidator, 如圖3.2
圖3.2 新增類檔案
2. 使用Using 語句向 IDValidator 類新增必要的引用。
using System.Text.RegularExpressions;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
3. 向IDValidation 類新增如下程式碼。主要定義了兩個建構函式和一個DoValidate 過載函式。這些程式碼可以根據驗證的需要改動,是自己定義的。
public
class
IDValidator
:Validator
<string
{
public IDValidator(string tag)
: this (tag, false )
{ }
public IDValidator(string tag, bool ignoreHypens)
: base (string .Empty, tag)
{
this .ignoreHypens = ignoreHypens;
}
private bool ignoreHypens;
protected override string DefaultMessageTemplate
{
get { throw new NotImplementedException (); }
}
static Regex IDRegex = new Regex (@"^[0-9]*[1-9][0-9]*$" );
protected override void DoValidate(string objectToValidate, object currentTarget, string key, ValidationResults validationResults)
{
Match match = 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. 新增引用。
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
3. 按照下面的格式新增程式碼。
public class IDValidatorAttribute :ValidatorAttribute
{
protected override Validator DoCreateValidator(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
{
public string UserName{ get ; set ; }
public string password{ get ; set ; }
[IDValidator ]
public string IDcard{ get ; set ; }
public string email{ get ; set ; }
}
任務5 :驗證。