ASP.NET立即上手教程 6
2024-07-10 12:56:34
供稿:網(wǎng)友
 
表單驗證服務(wù)器控件
驗證介紹
網(wǎng)絡(luò)形成框架包括一套易用而功能強大的用于驗證的服務(wù)器控件,用來檢查輸入表單的錯
誤,并且在必要的時候,向用戶顯示提示信息。將驗證控件添加到設(shè)計圈套表格,就像添
加其他服務(wù)器控件一樣。驗證控件有不同的驗證類型,例如范圍檢查或者模式匹配,添加
一個 requiredfieldvalidator 控件可以保證用戶不能跳過某一個要求輸入內(nèi)容的字段。
你可以對一個輸入控件組合若干個驗證控件。例如,你可能要求某一字段不能為空,并且
必須輸入某一個范圍的值。驗證控件與服務(wù)器控件的有限子集協(xié)同工作。也就是說,對于
不同的控件,可能需要驗證不同屬性的值。下表列出了可能被驗證的輸入控件的屬性 控件
驗證屬性
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 檢查用戶的輸入在特定的最大值和最小值范圍之內(nèi)。 你可以用成對的數(shù)
字、字符或日期來驗證輸入范圍。范圍邊界可以使用能得到常量的表達(dá)式。
regularexpressionvalidator 檢查用戶輸入與一個正則表達(dá)式定義的模式匹配。這種驗證
允許你檢查可預(yù)見的字符序列,例如社會保險號碼、電子郵件地址、電話號碼、郵政編碼
等等。
customvalidator 使用自己編寫的驗證邏輯來檢查用戶的輸入。這種驗證允許你檢查運行
時刻得到的值。
validationsummary 摘要顯示頁面上所有驗證控件的驗證錯誤信息
客戶端驗證
一般來說,驗證控間總是在服務(wù)器端執(zhí)行驗證檢查。 然而,如果用戶正在使用一個支持
dhtml 的瀏覽器工作,驗證控間也能使用客戶端腳本來驗證。 藉由客戶端確認(rèn),當(dāng)表單提
交給服務(wù)器的時候 ,客戶端的任何檢測的錯誤都可以發(fā)現(xiàn)。當(dāng)任何一個驗證控間發(fā)現(xiàn)錯誤
的時候,提交到服務(wù)器的表單都會取消,同時顯示驗證控間的text 屬性。這就允許用戶在
表單提交到服務(wù)器之前,校正輸入的錯誤。當(dāng)包含錯誤的字段失去焦點的時候,該字段馬
上會被重新驗證。這樣就給用戶提供了一種豐富的、交互式的驗證過程。
注意:web forms頁框架總是在服務(wù)器端執(zhí)行驗證,即使驗證已經(jīng)在客戶端執(zhí)行也是如此。
這有助于防止冒名頂替和預(yù)訂事務(wù)來通過驗證。
默認(rèn)情況下允許客戶端驗證。如果客戶端條件允許,高版本瀏覽器驗證模式將自動執(zhí)行。
要想禁止客戶端驗證,設(shè)置頁面的 clienttarget 屬性為"downlevel"("uplevel" 強制客
戶端驗證)
c# validator2.aspx
[運行] | [源代碼]
顯示驗證錯誤信息
當(dāng)用戶的輸入開始處理(例如,當(dāng)表單已經(jīng)提交),web forms頁面框架傳遞用戶的輸入到
相關(guān)聯(lián)的驗證控件。驗證控件測試用戶的輸入,并且設(shè)置屬性來標(biāo)志輸入是否通過驗證測
試。所有的驗證控件運行完畢之后,才設(shè)置頁面的isvalid屬性。如果任何一個驗證控件顯
示了驗證失敗,整個頁面的驗證也是無效的。
如果驗證控件監(jiān)測到錯誤,該控件或者頁面上的validationsummary 控件就會在頁面上顯
示一條錯誤提示信息。validationsummary 控件顯示錯誤提示的前提是頁面的isvalid等于
false。(也就是說,任何一個驗證控件沒有通過,都會激活validationsummary),它可
以監(jiān)測到每一個驗證控件的驗證錯誤,并且把所有的錯誤一次全部顯示出來。下面的例子
演示了validationsummary控件如何進(jìn)行錯誤提示的。
c# validator3.aspx
[運行] | [源代碼]
使用比較驗證控件comparevalidator
comparevalidator服務(wù)器驗證控件用來比較兩個控件的值。它使用三個關(guān)鍵屬性來進(jìn)行它
的驗證。controltovalidate 和 controltocompare 包含要比較的值,operator 定義了要
進(jìn)行的比較類型---例如,等于或者不等于等等。comparevalidator通過對表達(dá)式求值來執(zhí)
行驗證,就象下面這樣:
( controltovalidate controltocompare )
如果表達(dá)式的值為true,驗證結(jié)果為通過。
下面的例子說明了如何使用 comparevalidator 控件
c# validator4.aspx
[運行] | [源代碼]
使用范圍驗證控件 rangevalidator
rangevalidator 服務(wù)器控件測試輸入值是否在一個給定范圍之內(nèi)。rangevalidator 使用
三個關(guān)鍵屬性來執(zhí)行驗證。 controltovalidate 包含驗證的對象,minimumvalue 和 max
imumvalue 定義了有效范圍的最小值和最大值。
下面的例子顯示了如何使用rangevalidator 控件。
c# validator5.aspx
[運行] | [源代碼]
使用正則表達(dá)式驗證控件regularexpressionvalidator
regularexpressionvalidator 服務(wù)器控件用來檢查用戶輸入是否與正則表達(dá)式定義的模式
匹配。這個控件允許你檢查可預(yù)見的字符串系列,例如社會保障號碼、電子郵件地址、電
話號碼和郵政編碼等等。
regularexpressionvalidator 使用兩個關(guān)鍵屬性來執(zhí)行驗證。controltovalidate 包含要
驗證的控件對象, validationexpression 包含用來匹配的正則表達(dá)式。
原教材對正則表達(dá)式說得比較少,這里我來補充一下:
正則表達(dá)式是一種功能強大的字符串定義規(guī)則,例如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個數(shù)字字符。請注意他與[a-za-z0-9]{3}的區(qū)別。為了閱讀上的方便,我們通常會把含有
“|”符號的字符串放在()中,例如([a-za-z]{3}|[0.9]{3})
上述的[]{}.()|都是正則表達(dá)式中的特殊符號。如果希望可接受的字符串中包含這些字符
,必須在這些字符前面加上斜線 /。例如,“/.{3}”,表示必須輸入3個”.”。
下面的例子演示如何使用 validationexpression控件。
c# validator6.aspx
[運行] | [源代碼]
c# validator7.aspx
[運行] | [源代碼]
使用自定義驗證控件 custom validation
customvalidator 服務(wù)器控件調(diào)用用戶自定義函數(shù)來執(zhí)行一個標(biāo)準(zhǔn)驗證控件無法處理得驗
證。該自定義函數(shù)既可以在服務(wù)器端執(zhí)行,也可以在客戶端腳本(如vbscript 或jscript
)。對于客戶端自定義驗證,自定義函數(shù)名稱必須在clientvalidationfunction 屬性中明
確指出。自定義函數(shù)必須使用這樣的參數(shù)格式:
function myvalidator(source, arguments)
注意 source 參數(shù)是客戶端customvalidator ,arguments參數(shù)是帶有兩個屬性value 和
isvalid的對象, value 屬性對象的值, isvalid 屬性是一個布爾值,用來設(shè)置返回的驗
證結(jié)果。
對于服務(wù)器端自定義驗證,將你的自定義驗證放置在驗證控件的onservervalidate 中。
下面的例子演示了如何使用customvalidator 控件。
c# validator8.aspx
[運行] | [源代碼]
使用全部驗證控件的例子
下面的例子演示了一個典型的注冊表單,其中使用了本章討論的所有驗證控件
c# validator9.aspx
[運行] | [源代碼]
本章小結(jié)
1. 驗證控件可以用來檢驗web forms 頁面的任何輸入。
2. 對于一個給定的輸入字段,可以使用若干個驗證控件來檢驗。
3. 除了服務(wù)器端驗證以外,也可以使用客戶端驗證來提高form的可用性。
4. customvalidator 控件可以讓用戶自定義驗證規(guī)則。
在后續(xù)的章節(jié),我們開始講用戶自定義控件
待續(xù)=========asp.net中文專業(yè)網(wǎng)(ourasp.net)==========wincheer