ASP.NET立即上手教程(6)_.Net教程
推薦:ASP.NET立即上手教程(5)應(yīng)用樣式到HTML服務(wù)器控件 WEB是一個(gè)靈活的用戶接口環(huán)境,不同的站點(diǎn)在視覺(jué)和感覺(jué)上極盡變化之能事。層疊式樣式表(CSS)的廣泛應(yīng)用,極大的豐富了WEB的設(shè)計(jì)。所有ASP.NET的HTML服務(wù)器控件和W
表單驗(yàn)證服務(wù)器控件
驗(yàn)證介紹
網(wǎng)絡(luò)形成框架包括一套易用而功能強(qiáng)大的用于驗(yàn)證的服務(wù)器控件,用來(lái)檢查輸入表單的錯(cuò)誤,并且在必要的時(shí)候,向用戶顯示提示信息。將驗(yàn)證控件添加到設(shè)計(jì)圈套表格,就像添加其他服務(wù)器控件一樣。驗(yàn)證控件有不同的驗(yàn)證類型,例如范圍檢查或者模式匹配,添加一個(gè)RequiredFieldValidator 控件可以保證用戶不能跳過(guò)某一個(gè)要求輸入內(nèi)容的字段。你可以對(duì)一個(gè)輸入控件組合若干個(gè)驗(yàn)證控件。例如,你可能要求某一字段不能為空,并且必須輸入某一個(gè)范圍的值。驗(yàn)證控件與服務(wù)器控件的有限子集協(xié)同工作。也就是說(shuō),對(duì)于不同的控件,可能需要驗(yàn)證不同屬性的值。
驗(yàn)證控件類型
最簡(jiǎn)單的驗(yàn)證表單是要求輸入字段。不管用戶在字段中輸入了任何值,它就是驗(yàn)證通過(guò)的。如果頁(yè)面中所有的字段都驗(yàn)證通過(guò),那么頁(yè)面也是驗(yàn)證通過(guò)的(page is valid)。下面的例子說(shuō)明了RequiredFieldValidator驗(yàn)證控件的使用。
特定的驗(yàn)證情況需要不同的驗(yàn)證控件,例如范圍檢查或者模式匹配。
客戶端驗(yàn)證
一般來(lái)說(shuō),驗(yàn)證控間總是在服務(wù)器端執(zhí)行驗(yàn)證檢查。 然而,如果用戶正在使用一個(gè)支持 DHTML 的瀏覽器工作,驗(yàn)證控間也能使用客戶端腳本來(lái)驗(yàn)證。藉由客戶端確認(rèn),當(dāng)表單提交給服務(wù)器的時(shí)候,客戶端的任何檢測(cè)的錯(cuò)誤都可以發(fā)現(xiàn)。當(dāng)任何一個(gè)驗(yàn)證控間發(fā)現(xiàn)錯(cuò)誤的時(shí)候,提交到服務(wù)器的表單都會(huì)取消,同時(shí)顯示驗(yàn)證控間的Text 屬性。這就允許用戶在表單提交到服務(wù)器之前,校正輸入的錯(cuò)誤。當(dāng)包含錯(cuò)誤的字段失去焦點(diǎn)的時(shí)候,該字段馬上會(huì)被重新驗(yàn)證。這樣就給用戶提供了一種豐富的、交互式的驗(yàn)證過(guò)程。
注意:web forms頁(yè)框架總是在服務(wù)器端執(zhí)行驗(yàn)證,即使驗(yàn)證已經(jīng)在客戶端執(zhí)行也是如此。這有助于防止冒名頂替和預(yù)訂事務(wù)來(lái)通過(guò)驗(yàn)證。
默認(rèn)情況下允許客戶端驗(yàn)證。如果客戶端條件允許,高版本瀏覽器驗(yàn)證模式將自動(dòng)執(zhí)行。要想禁止客戶端驗(yàn)證,設(shè)置頁(yè)面的 ClientTarget 屬性為"Downlevel"("Uplevel" 強(qiáng)制客戶端驗(yàn)證)
顯示驗(yàn)證錯(cuò)誤信息
當(dāng)用戶的輸入開(kāi)始處理(例如,當(dāng)表單已經(jīng)提交),Web Forms頁(yè)面框架傳遞用戶的輸入到相關(guān)聯(lián)的驗(yàn)證控件。驗(yàn)證控件測(cè)試用戶的輸入,并且設(shè)置屬性來(lái)標(biāo)志輸入是否通過(guò)驗(yàn)證測(cè)試。所有的驗(yàn)證控件運(yùn)行完畢之后,才設(shè)置頁(yè)面的IsValid屬性。如果任何一個(gè)驗(yàn)證控件顯示了驗(yàn)證失敗,整個(gè)頁(yè)面的驗(yàn)證也是無(wú)效的。
如果驗(yàn)證控件監(jiān)測(cè)到錯(cuò)誤,該控件或者頁(yè)面上的ValidationSummary 控件就會(huì)在頁(yè)面上顯示一條錯(cuò)誤提示信息。ValidationSummary 控件顯示錯(cuò)誤提示的前提是頁(yè)面的IsValid等于false。(也就是說(shuō),任何一個(gè)驗(yàn)證控件沒(méi)有通過(guò),都會(huì)激活ValidationSummary),它可以監(jiān)測(cè)到每一個(gè)驗(yàn)證控件的驗(yàn)證錯(cuò)誤,并且把所有的錯(cuò)誤一次全部顯示出來(lái)。下面的例子演示了ValidationSummary控件如何進(jìn)行錯(cuò)誤提示的。
使用比較驗(yàn)證控件CompareValidator
CompareValidator服務(wù)器驗(yàn)證控件用來(lái)比較兩個(gè)控件的值。它使用三個(gè)關(guān)鍵屬性來(lái)進(jìn)行它的驗(yàn)證。ControlToValidate 和 ControlToCompare 包含要比較的值,Operator 定義了要進(jìn)行的比較類型---例如,等于或者不等于等等。CompareValidator通過(guò)對(duì)表達(dá)式求值來(lái)執(zhí)行驗(yàn)證,就象下面這樣:
( ControlToValidate ControlToCompare )
如果表達(dá)式的值為true,驗(yàn)證結(jié)果為通過(guò)。
下面的例子說(shuō)明了如何使用 CompareValidator 控件
使用范圍驗(yàn)證控件 RangeValidator
RangeValidator 服務(wù)器控件測(cè)試輸入值是否在一個(gè)給定范圍之內(nèi)。RangeValidator 使用三個(gè)關(guān)鍵屬性來(lái)執(zhí)行驗(yàn)證。 ControlToValidate 包含驗(yàn)證的對(duì)象,MinimumValue 和 MaximumValue 定義了有效范圍的最小值和最大值。
下面的例子顯示了如何使用RangeValidator 控件。
使用正則表達(dá)式驗(yàn)證控件RegularExpressionValidator
RegularExpressionValidator 服務(wù)器控件用來(lái)檢查用戶輸入是否與正則表達(dá)式定義的模式匹配。這個(gè)控件允許你檢查可預(yù)見(jiàn)的字符串系列,例如社會(huì)保障號(hào)碼、電子郵件地址、電話號(hào)碼和郵政編碼等等。
RegularExpressionValidator 使用兩個(gè)關(guān)鍵屬性來(lái)執(zhí)行驗(yàn)證。ControlToValidate 包含要驗(yàn)證的控件對(duì)象, ValidationExpression 包含用來(lái)匹配的正則表達(dá)式。
原教材對(duì)正則表達(dá)式說(shuō)得比較少,這里我來(lái)補(bǔ)充一下:
正則表達(dá)式是一種功能強(qiáng)大的字符串定義規(guī)則,例如dos下熟悉的“*” 和“?” 他最早在unix中引入。在asp.net中,他的格式是[可接受字符]{ 范圍}。舉例來(lái)說(shuō),[a-z]{ 3,7}表示至少含有三個(gè)字符,最多含有7個(gè)字符,其中字符只能是’a’~’z’的范圍,如”krpam”是合法的,而”12fe3”或者”5W”是不合法的。
在[]里面除了?-?的定義之外,也可以直接寫出可接受的字符,例如[ourasp]表示只接受’o’、’u’、’r’、’a’、’s’、’p’這幾個(gè)字符,而^表示反集合,例如[^aurasp],表示除了’o’、’u’、’r’、’a’、’s’、’p’以外,任何字符都接受。如果表示可接受任意字符,使用“.”來(lái)表示。例如, .{ 0,} 表示可以接受任意多個(gè)任意字符。
在{ }里面,除了常用的{ 3}、{ 2-13}這樣的格式以外,還有以下常用的格式:{ n,} 表示至少輸入n個(gè)字符。
“|” 符號(hào)表示or(或),例如[a-zA-Z]{ 3}|[0.9]{ 3}表示可接受的字符是3個(gè)英文字母或者3個(gè)數(shù)字字符。請(qǐng)注意他與[a-zA-Z0-9]{ 3}的區(qū)別。為了閱讀上的方便,我們通常會(huì)把含有“|”符號(hào)的字符串放在()中,例如([a-zA-Z]{ 3}|[0.9]{ 3})上述的[]{ }.()|都是正則表達(dá)式中的特殊符號(hào)。如果希望可接受的字符串中包含這些字符,必須在這些字符前面加上斜線 \。例如,“\.{ 3}”,表示必須輸入3個(gè)”.”。
下面的例子演示如何使用 ValidationExpression控件。
使用自定義驗(yàn)證控件 Custom Validation
CustomValidator 服務(wù)器控件調(diào)用用戶自定義函數(shù)來(lái)執(zhí)行一個(gè)標(biāo)準(zhǔn)驗(yàn)證控件無(wú)法處理得驗(yàn)證。該自定義函數(shù)既可以在服務(wù)器端執(zhí)行,也可以在客戶端腳本(如VBscript 或JScript)。對(duì)于客戶端自定義驗(yàn)證,自定義函數(shù)名稱必須在ClientValidationFunction 屬性中明確指出。自定義函數(shù)必須使用這樣的參數(shù)格式:
function myvalidator(source, arguments)
注意 source 參數(shù)是客戶端CustomValidator ,arguments參數(shù)是帶有兩個(gè)屬性Value 和 IsValid的對(duì)象, Value 屬性對(duì)象的值, IsValid 屬性是一個(gè)布爾值,用來(lái)設(shè)置返回的驗(yàn)證結(jié)果。
對(duì)于服務(wù)器端自定義驗(yàn)證,將你的自定義驗(yàn)證放置在驗(yàn)證控件的OnServerValidate 中。
下面的例子演示了如何使用CustomValidator 控件。
使用全部驗(yàn)證控件的例子
下面的例子演示了一個(gè)典型的注冊(cè)表單,其中使用了本章討論的所有驗(yàn)證控件
本章小結(jié)
1、驗(yàn)證控件可以用來(lái)檢驗(yàn)Web Forms 頁(yè)面的任何輸入。
2、對(duì)于一個(gè)給定的輸入字段,可以使用若干個(gè)驗(yàn)證控件來(lái)檢驗(yàn)。
3、除了服務(wù)器端驗(yàn)證以外,也可以使用客戶端驗(yàn)證來(lái)提高form的可用性。
4、CustomValidator 控件可以讓用戶自定義驗(yàn)證規(guī)則。
分享:ASP.NET立即上手教程(4)聲明服務(wù)器控件 ASP.NET服務(wù)器控件使用包含runat="server" 屬性的說(shuō)明標(biāo)志來(lái)聲明。下面的例子聲明了3個(gè)<asp:label runat="server">服務(wù)器控件,并且分別定制了文本
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- IsPostBack原理的介紹
- “/”應(yīng)用程序中的服務(wù)器錯(cuò)誤及解決方法
- 解析DataList如何實(shí)現(xiàn)“行轉(zhuǎn)列”代碼
- ASP.NET 2.0實(shí)現(xiàn)防止同一用戶同時(shí)登陸
- 基于.NET平臺(tái)的分層架構(gòu)實(shí)戰(zhàn)(五)接口的設(shè)計(jì)與實(shí)現(xiàn)
- 談ASP.NET中Cookie的使用
- 妙用ASP2.0中的URL映射改變網(wǎng)址
- ASP.NET筆記之 行命令處理與分頁(yè)詳解
- 解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法
- ASP.NET中利用存儲(chǔ)過(guò)程實(shí)現(xiàn)模糊查詢
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-ASP.NET立即上手教程(6)
。