驗證控制項用於驗證使用者的輸入,利用這些控制項,開發人員可以輕鬆的實現對使用者輸入的驗證。ASP.NET提供了六種驗證控制項。
1.Required Field Validator:驗證輸入是否為空白的控制項。
主要屬性:
Control To Validate:表示要進行檢查的控制項ID。此屬性必須設定為輸入控制項的ID,否則會發生異常。另外該ID所代表的控制項必須和驗證控制項在同一個容器中。
Error Message:表示當檢測不合法時,出現的錯誤提示資訊。
Display:表示錯誤的顯示方式,取值有Static、Dynamic和None。Static表示控制項的錯誤提示資訊(Error Message)在頁面中佔有固定的位置,如果沒有錯誤,他的顯示類似label;Dynamic表示控制項的錯誤資訊出現時才佔用頁面位置;None表示控制項的錯誤資訊出現時不顯示,但可以在Validator Summary中顯示。
2.Range Validator:範圍驗證控制項。
測試某個輸入的值是否在指定的範圍內。除了與Required Field Validator相同的屬性外,還有:
Maximum Value範圍的最大值
Minimum Value範圍的最小值
Tyep輸入值的資料類型。
3.Compare Validator:比較驗證控制項。
用於將某個使用者輸入與Web表單中其他控制項的值或者常數進行比較。
基本屬性:
Control To Validate:要被驗證的控制項ID;
Value To Compare:用來比較的常數值;
Control To Compare:用來比較的控制項ID;
Type:比較的資料類型;
Operator:比較操作類型;
Operator有7個可選屬性值,詳見下表:
| 值 |
說明 |
| Equal |
相比較的兩個值相等,通過驗證。 |
| Not Equal |
相比較的兩個值不相等,通過驗證。 |
| GreaterThan |
當被驗證的值(Control To Validate屬性所指向控制項的值)大於指定的常數(Value To Compare)或指定控制項(Control To Compare)的值時,驗證通過。 |
| Greater Than Equal |
當被驗證的值(Control To Validate屬性所指向控制項的值)大於等於指定的常數(Value To Compare)或指定控制項(Control To Compare)的值時,驗證通過。 |
| Less Than |
當被驗證的值(ControlToValidate屬性所指向控制項的值)小於指定的常數(ValueToCompare)或指定控制項(ControlToCompare)的值時,驗證通過。 |
| Less Than Equal |
當被驗證的值(Control To Validate屬性所指向控制項的值)小於等於指定的常數(Value To Compare)或指定控制項(Control To Compare)的值時,驗證通過。 |
| Data Type Check |
當被驗證的值(Control To Validate屬性所指向控制項的值)與指定的常數(Value To Compare)或指定控制項(Control To Compare)的實值型別相同時,驗證通過。 |
4.RegularExpressionValidator:Regex驗證控制項。
提供一個Regex編輯器,在屬性視窗中的ValidationExpression。使用這個控制項可以驗證比如電子郵件、社會安全號碼碼、URL等格式字串。
5.Custom Validator:使用者自訂驗證控制項。
On Server Validate事件是使用者自訂的驗證函式,形式如下:
protected void Custom Validator1_Server Validate(object source, Server Validate Event Args args)
{
}
如果args.Is Valid=true,則表示驗證通過,否則表示驗證失敗。
6.Validation Summary:匯總顯示驗證控制項。
幾個值得注意的屬性:
Header Text:驗證摘要頁的標題部分顯示的文本。
Show Summary:用於指定是否在頁面上顯示摘要。
Show Message Box:用於指定是否顯示一個訊息對話方塊來顯示驗證的摘要資訊。
Display Mode:用於設定驗證摘要顯示的模式,可取下列的幾個值:
Bullet List:預設的顯示模式,每個錯誤提示訊息都顯示為單獨的項;
List:每個顯示資訊都顯示在不同行中;
Single Paragraph:所有的錯誤提示資訊都顯示在同一段中。
7.屏蔽驗證功能
在一般情況下,ASP.NET的驗證會自動開啟驗證功能,使用者提交時,如果驗證沒有通過,那麼無法提交資料。但有時候需要允許使用者即使在沒有通過驗證也能發送資料。例如:單擊“取消”按鈕並不需要所有的資料都通過驗證的情況下才能提交資料。
在這種情況下,為了針對某個控制項屏蔽伺服器端和用戶端驗證,可以使用下列兩種方法在不觸發驗證控制項的情況下會送資料。
1)將控制項的CausesValidation屬性設定為false。例如:建立“取消”按鈕,使其不觸發驗證檢查。
2)如果要屏蔽用戶端驗證而只執行服務端驗證,可以將這個驗證控制項設定為不產生用戶端指令碼;如果要在驗證前執行一些伺服器代碼,可以將該控制項的Enable Client Script屬性設定為false。