如果說學習案頭開發的經典入門程式是在控制台上輸出“Hello Word”的話,那麼網頁入門的程式往往是做一個簡單的註冊頁面(當然,登入資料在不牽涉到資料庫等情況下可能是寫死的,比如在代碼中或者在設定檔中)。“麻雀雖小,五髒俱全”,登入表單要考慮的問題也不少,除了驗證使用者名稱和密碼是否匹配之外,還要考慮“使用者名稱”是否為空白、電子郵件格式、年齡範圍等問題。或許您用語句在後台代碼判斷,不過得不償失,因為微軟人性化的操作已經為您提供了這方面的控制項,稱為驗證控制項。下面僅僅對驗證控制項的屬性等作一個總結。
1、RequiredFieldValidator(驗證非法值控制項)
該控制項的英文直面被翻譯成“非空控制項”,有一個非常重要的屬性:ControlToValidate,用於設定被驗證的控制項屬性值是否為空白(對於TextBox而言,屬性值是“Text”),因此只要在ControlValidate中選擇要綁定的那個控制項(比如“登入名稱”的TextBox的ID)即可。
如果性別驗證是一個下拉框(預設是沒有選擇),此控制項也可以使用RequiredFieldValidate進行驗證(下拉框有兩個屬性“TextField”和“ValueField”,前者用於展示在頁面上的值,選中某個以後可以通過ValueField擷取其真實值)。如果使用RequiredFieldValidate驗證下拉框,那麼它將驗證它的ValueField的值。此時您必須另外設定它的InitialValue,這個屬性是表示如果被驗證的那個控制項的值等於InitialValue中的那個值,則將被視作非法值。
結論1:其實RequiredFieldValidate判斷非法值的標準就是對比被比較的那個控制項的值是否和InitialValue一致,如果一致被認定是非法的,所以不一定就判斷“空”,我看這個控制項的名稱被稱為“非法驗證”為好。
除此之外,RequiredFieldValidate還有幾個重要的屬性(以下控制項若具備這些屬性,則它們用法等同於此):
結論2:
l ErrorMessage:出錯提示資訊(用於顯示驗證失敗的時候顯示的資訊,如果設定了Text,該屬性將被Text替代)。
l Text:驗證失敗時提示資訊(驗證失敗時,顯示該值;如果該值為空白,那麼顯示ErrorMessage的值)。
l Display:顯示方式(None—不在控制項處顯示出錯提示資訊,Static—在控制項處顯示出錯資訊,驗證通過後隱藏,但佔位,Dynamic—在控制項處顯示出錯資訊,驗證通過後隱藏,不佔位,一般用於一個控制項需要有幾個驗證綁定時布局美觀)。
2、CompareValidator(比較驗證控制項)
該控制項專門比較兩個值是否相等。
結論3:
l ControlToCompare:被比較的那個控制項的ID。
l ControlToValidate:要比較的那個控制項的ID。
l ValueToCompare:要被比較的數值。
l Operator :比較的符號,當不滿足該條件時觸發例外狀況事件(Equal-相等,GreatThan-大於,GreatEqualThan-大於等於,LessThan-小於,LessEqualThan-小於等於)。
【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用;一般ValueToCompare和ControlToCompare兩者選取其一即可】
3、RegularExpressionValidator(格式驗證)
該控制項專門驗證綁定的ID是否和預先的Regex是否符合。
結論4:
l ValidationExpression:驗證的規則(Regex)。
l ControlToCompare:被比較的那個控制項的ID。
【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用】
4、RangeValidator(範圍驗證)
該控制項專門驗證綁定的ID值是否在某個範圍之內
結論5:
l ControlToCompare:被比較的那個控制項的ID。
l MaximunValue:上限數值。
l MinimunValue:下限數值。
【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用】
5、CustomValidator(自訂驗證)
該控制項用於讓使用者自訂驗證觸發規則實施驗證(比如驗證一個驗證碼與輸入的是否匹配,微軟沒有提供這樣一個控制項,假設驗證碼動態產生的,並放在Session中,Session的名稱Code)。
結論6:
l ControlToCompare:被比較的那個控制項的ID。
此時您應該激發以下事件,並編寫代碼驗證(樣本):
Code
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
string code = Session["Code"].ToString();
args.IsValid = (args.Value == code);
}
l args.Isvalid:驗證是否合法(需要設定)。
l args.Value:被綁定的那個控制項的值(需要擷取與某個其它值對比)。
【注意:該控制項必須把ValidateEmptyText設定成True才會驗證空值】