ASP.NET專題研究——驗證控制項

來源:互聯網
上載者:User

       如果說學習案頭開發的經典入門程式是在控制台上輸出“Hello Word”的話,那麼網頁入門的程式往往是做一個簡單的註冊頁面(當然,登入資料在不牽涉到資料庫等情況下可能是寫死的,比如在代碼中或者在設定檔中)。“麻雀雖小,五髒俱全”,登入表單要考慮的問題也不少,除了驗證使用者名稱和密碼是否匹配之外,還要考慮“使用者名稱”是否為空白、電子郵件格式、年齡範圍等問題。或許您用語句在後台代碼判斷,不過得不償失,因為微軟人性化的操作已經為您提供了這方面的控制項,稱為驗證控制項。下面僅僅對驗證控制項的屬性等作一個總結。

 

1RequiredFieldValidator(驗證非法值控制項)

       該控制項的英文直面被翻譯成“非空控制項”,有一個非常重要的屬性: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—在控制項處顯示出錯資訊,驗證通過後隱藏,不佔位,一般用於一個控制項需要有幾個驗證綁定時布局美觀)。

 

2CompareValidator(比較驗證控制項)

該控制項專門比較兩個值是否相等。

結論3:

l        ControlToCompare:被比較的那個控制項的ID。

l        ControlToValidate:要比較的那個控制項的ID。

l        ValueToCompare:要被比較的數值。

l       Operator :比較的符號,當不滿足該條件時觸發例外狀況事件(Equal-相等,GreatThan-大於,GreatEqualThan-大於等於,LessThan-小於,LessEqualThan-小於等於)。

 

【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用;一般ValueToCompare和ControlToCompare兩者選取其一即可】

3RegularExpressionValidator(格式驗證)

該控制項專門驗證綁定的ID是否和預先的Regex是否符合。

結論4:

l        ValidationExpression:驗證的規則(Regex)。

l        ControlToCompare:被比較的那個控制項的ID。

【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用】

 

4RangeValidator(範圍驗證)

該控制項專門驗證綁定的ID值是否在某個範圍之內

結論5:

l        ControlToCompare:被比較的那個控制項的ID。

l        MaximunValue:上限數值。

l        MinimunValue:下限數值。

【注意:該控制項不能驗證空值,所以一般和RequiredFieldValidator配合使用】

 

5CustomValidator(自訂驗證)

該控制項用於讓使用者自訂驗證觸發規則實施驗證(比如驗證一個驗證碼與輸入的是否匹配,微軟沒有提供這樣一個控制項,假設驗證碼動態產生的,並放在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才會驗證空值】

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.