1. 程式人生 > >Enterprise Library Validation Application Block Step by Step (3)

Enterprise Library Validation Application Block Step by Step (3)

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;

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 :驗證。

3