ASP.NET立即上手教程 6

來源:互聯網
上載者:User
asp.net|教程 表單驗證伺服器控制項
驗證介紹
網路形成架構套件括一套易用而功能強大的用於驗證的伺服器控制項,用來檢查輸入表單的錯
誤,並且在必要的時候,向使用者顯示提示資訊。將驗證控制項添加到設計圈套表格,就像添
加其他伺服器控制項一樣。驗證控制項有不同的驗證類型,例如範圍檢查或者模式比對,添加
一個 RequiredFieldValidator 控制項可以保證使用者不能跳過某一個要求輸入內容的欄位。
你可以對一個輸入控制群組合若干個驗證控制項。例如,你可能要求某一欄位不可為空,並且
必須輸入某一個範圍的值。驗證控制項與伺服器控制項的有限子集協同工作。也就是說,對於
不同的控制項,可能需要驗證不同屬性的值。下表列出了可能被驗證的輸入控制項的屬性 控制項
驗證屬性
HtmlInputText Value
HtmlTextArea Value
HtmlSelect Value
HtmlInputFile Value
TextBox Text
ListBox SelectedItem.Value
DropDownList SelectedItem.Value
RadioButtonList SelectedItem.Value
驗證控制項類型
最簡單的驗證表單是要求輸入欄位。不管使用者在欄位中輸入了任何值,它就是驗證通過的
。如果頁面中所有的欄位都驗證通過,那麼頁面也是驗證通過的(page is valid)。下面
的例子說明了RequiredFieldValidator驗證控制項的使用。
C# Validator1.aspx
[運行] | [原始碼]
特定的驗證情況需要不同的驗證控制項,例如範圍檢查或者模式比對。下表列出了所有驗證
控制項: 控制項名稱 描述
RequiredFieldValidator 保證使用者不能忽略輸入。
CompareValidator 用比較操作符(小於、等於、大於等等)比較使用者的輸入和常量(或者
另一個控制項的屬性值)
RangeValidator 檢查使用者的輸入在特定的最大值和最小值範圍之內。 你可以用成對的數
字、字元或日期來驗證輸入範圍。範圍邊界可以使用能得到常量的運算式。
RegularExpressionValidator 檢查使用者輸入與一個Regex定義的模式比對。這種驗證
允許你檢查可預見的字元序列,例如社會保險號碼、電子郵件地址、電話號碼、郵遞區號
等等。
CustomValidator 使用自己編寫的驗證邏輯來檢查使用者的輸入。這種驗證允許你檢查運行
時刻得到的值。
ValidationSummary 摘要顯示頁面上所有驗證控制項的驗證錯誤資訊
用戶端驗證
一般來說,驗證控間總是在伺服器端執行驗證檢查。 然而,如果使用者正在使用一個支援
DHTML 的瀏覽器工作,驗證控間也能使用用戶端指令碼來驗證。 藉由用戶端確認,當表單提
交給伺服器的時候 ,用戶端的任何檢測的錯誤都可以發現。當任何一個驗證控間發現錯誤
的時候,提交到伺服器的表單都會取消,同時顯示驗證控間的Text 屬性。這就允許使用者在
表單提交到伺服器之前,校正輸入的錯誤。當包含錯誤的欄位失去焦點的時候,該欄位馬
上會被重新驗證。這樣就給使用者提供了一種豐富的、互動驗證過程。
注意:web forms頁架構總是在伺服器端執行驗證,即使驗證已經在用戶端執行也是如此。
這有助於防止冒名頂替和預訂事務來通過驗證。
預設情況下允許用戶端驗證。如果用戶端條件允許,高版本瀏覽器驗證模式將自動執行。
要想禁止用戶端驗證,設定頁面的 ClientTarget 屬性為"Downlevel"("Uplevel" 強制客
戶端驗證)
C# Validator2.aspx
[運行] | [原始碼]
顯示驗證錯誤資訊
當使用者的輸入開始處理(例如,當表單已經提交),Web Forms頁面架構傳遞使用者的輸入到
相關聯的驗證控制項。驗證控制項測試使用者的輸入,並且設定屬性來標誌輸入是否通過驗證測
試。所有的驗證控制項運行完畢之後,才設定頁面的IsValid屬性。如果任何一個驗證控制項顯
示了驗證失敗,整個頁面的驗證也是無效的。
如果驗證控制項監測到錯誤,該控制項或者頁面上的ValidationSummary 控制項就會在頁面上顯
示一條錯誤提示資訊。ValidationSummary 控制項顯示錯誤提示的前提是頁面的IsValid等於
false。(也就是說,任何一個驗證控制項沒有通過,都會啟用ValidationSummary),它可
以監測到每一個驗證控制項的驗證錯誤,並且把所有的錯誤一次全部顯示出來。下面的例子
示範了ValidationSummary控制項如何進行錯誤提示的。
C# Validator3.aspx
[運行] | [原始碼]
使用比較驗證控制項CompareValidator
CompareValidator伺服器驗證控制項用來比較兩個控制項的值。它使用三個關鍵屬性來進行它
的驗證。ControlToValidate 和 ControlToCompare 包含要比較的值,Operator 定義了要
進行的比較類型---例如,等於或者不等於等等。CompareValidator通過對錶達式求值來執
行驗證,就象下面這樣:
( ControlToValidate ControlToCompare )
如果運算式的值為true,驗證結果為通過。
下面的例子說明了如何使用 CompareValidator 控制項
C# Validator4.aspx
[運行] | [原始碼]
使用範圍驗證控制項 RangeValidator
RangeValidator 伺服器控制項測試輸入值是否在一個給定範圍之內。RangeValidator 使用
三個關鍵屬性來執行驗證。 ControlToValidate 包含驗證的對象,MinimumValue 和 Max
imumValue 定義了有效範圍的最小值和最大值。
下面的例子顯示了如何使用RangeValidator 控制項。
C# Validator5.aspx
[運行] | [原始碼]
使用Regex驗證控制項RegularExpressionValidator
RegularExpressionValidator 伺服器控制項用來檢查使用者輸入是否與Regex定義的模式
匹配。這個控制項允許你檢查可預見的字串系列,例如社會保障號碼、電子郵件地址、電
話號碼和郵遞區號等等。
RegularExpressionValidator 使用兩個關鍵屬性來執行驗證。ControlToValidate 包含要
驗證的控制項對象, ValidationExpression 包含用來匹配的Regex。
原教材對Regex說得比較少,這裡我來補充一下:
Regex是一種功能強大的字串定義規則,例如dos下熟悉的“*” 和“?” 他最早
在unix中引入。在asp.net中,他的格式是[可接受字元]{範圍}。舉例來說,[a-z]{3,7}表
示至少含有三個字元,最多含有7個字元,其中字元只能是’a’~’z’的範圍,如”krpa
m”是合法的,而”12fe3”或者”5W”是不合法的。
在[]裡面除了?-?的定義之外,也可以直接寫出可接受的字元,例如[ourasp]表示只接受’
o’、’u’、’r’、’a’、’s’、’p’這幾個字元,而^表示反集合,例如[^aurasp]
,表示除了’o’、’u’、’r’、’a’、’s’、’p’以外,任何字元都接受。如果表示
可接受任一字元,使用“.”來表示。例如, .{0,} 表示可以接受任意多個任一字元。
在{}裡面,除了常用的{3}、{2-13}這樣的格式以外,還有以下常用的格式:{n,} 表示至
少輸入n個字元。
“|” 符號表示or(或),例如[a-zA-Z]{3}|[0.9]{3}表示可接受的字元是3個英文字母或者
3個數字字元。請注意他與[a-zA-Z0-9]{3}的區別。為了閱讀上的方便,我們通常會把含有
“|”符號的字串放在()中,例如([a-zA-Z]{3}|[0.9]{3})
上述的[]{}.()|都是Regex中的特殊符號。如果希望可接受的字串中包含這些字元
,必須在這些字元前面加上斜線 \。例如,“\.{3}”,表示必須輸入3個”.”。
下面的例子示範如何使用 ValidationExpression控制項。
C# Validator6.aspx
[運行] | [原始碼]
C# Validator7.aspx
[運行] | [原始碼]
使用自訂驗證控制項 Custom Validation
CustomValidator 伺服器控制項調用使用者自訂函數來執行一個標準驗證控制項無法處理得驗
證。該自訂函數既可以在伺服器端執行,也可以在用戶端指令碼(如VBscript 或JScript
)。對於用戶端自訂驗證,自訂函數名稱必須在ClientValidationFunction 屬性中明
確指出。自訂函數必須使用這樣的參數格式:
function myvalidator(source, arguments)
注意 source 參數是用戶端CustomValidator ,arguments參數是帶有兩個屬性Value 和
IsValid的對象, Value 屬性對象的值, IsValid 屬性是一個布爾值,用來設定返回的驗
證結果。
對於伺服器端自訂驗證,將你的自訂驗證放置在驗證控制項的OnServerValidate 中。
下面的例子示範了如何使用CustomValidator 控制項。
C# Validator8.aspx
[運行] | [原始碼]
使用全部驗證控制項的例子
下面的例子示範了一個典型的註冊表單,其中使用了本章討論的所有驗證控制項
C# Validator9.aspx
[運行] | [原始碼]
本章小結
1. 驗證控制項可以用來檢驗Web Forms 頁面的任何輸入。
2. 對於一個給定的輸入欄位,可以使用若干個驗證控制項來檢驗。
3. 除了伺服器端驗證以外,也可以使用用戶端驗證來提高form的可用性。
4. CustomValidator 控制項可以讓使用者自訂驗證規則。
在後續的章節,我們開始講使用者自訂控制項
待續=========asp.net中文專業網(ourasp.net)==========wincheer





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.