陳少燕
服務(wù)器控件的使用:當(dāng)向Web頁面中增加一個(gè)有效性驗(yàn)證控件時(shí),控件就會(huì)呈現(xiàn)在客戶端驗(yàn)證相關(guān)控件有效性的Javascript。
ASP.NET提供了6個(gè)有效性驗(yàn)證控件,其中5個(gè)是有效性控件,Cust-omvalidator控件是自定義控件。
下面介紹六個(gè)有效性驗(yàn)證控件的使用:
1.RequestFieldValidator控件:非空驗(yàn)證控件
(1)設(shè)計(jì)頁面
設(shè)置屬性:ControlToValidate和ErrorMessage。其中ControlTo-Validate是需要驗(yàn)證有效性的控件ID,ErrorMessage是當(dāng)驗(yàn)證出現(xiàn)錯(cuò)誤的時(shí)候,出現(xiàn)在頁面上的文本信息。
(2)拓展:dropdown的非空驗(yàn)證
dropdown默認(rèn)的話是“請(qǐng)選擇”的選項(xiàng)被選中,selected=true,其他都是false。要使用非空驗(yàn)證必須設(shè)置InitialValue=”請(qǐng)選擇”。
2.comparevalidator控件:比較控件
(1)設(shè)計(jì)頁面
(2)設(shè)置屬性:ControlToCompare和Cont-rolToValidate,分別填入需要驗(yàn)證的控件ID
默認(rèn)屬性O(shè)perator是equal。用來比較兩個(gè)文本框的內(nèi)容。
但是也可以對(duì)數(shù)據(jù)類型進(jìn)行檢查。如設(shè)置operator=DataType Check。然后設(shè)置類型type=date輸入錯(cuò)誤的日期格式就會(huì)出錯(cuò)誤。
3.RangeValidator控件:范圍驗(yàn)證控件
設(shè)置屬性:MaximumValue和Minimum-Value,分別是控件可接受的最大值和最小值。在本題中,用戶名的最大值是z,年齡的最大值是150。用戶名的最小值是a,年齡的最小值是0。
注意type的類型,默認(rèn)是string ,當(dāng)對(duì)數(shù)字進(jìn)行范圍驗(yàn)證,需要設(shè)置type=int。
4.RegurExpressValidator控件
正則表達(dá)式驗(yàn)證控件,該控件功能非常強(qiáng)大,控件允許檢查可預(yù)知的字符列表,如身份證號(hào),電子郵件地址,電話號(hào)碼或郵政編碼等。
設(shè)置屬性:
5.ValidatorSummary控件:錯(cuò)誤總結(jié)控件
在ASP.net程序中,如果頁面比較龐大而且需要驗(yàn)證的控件比較多,用戶在觀察錯(cuò)誤信息時(shí)可能會(huì)出現(xiàn)混亂。ValidatorSummay解決了這一個(gè)難題。
如果不輸入任何內(nèi)容就提交,那么Error-Message的錯(cuò)誤信息顯示在ValidationSummary控件中,而頁面主體顯示Text的信息。如下:
(1)表中屬性showmessagebox的值為Boolean型,如果設(shè)置true,頁面上的錯(cuò)誤信息不在頁面中顯示,而是以彈出對(duì)話框的形式來顯示錯(cuò)誤信息。Showsummary屬性值同樣為boolean型,如果設(shè)置其值為false,則錯(cuò)誤匯總控件不顯示匯總錯(cuò)誤信息,反之在頁面中顯示錯(cuò)誤信息。另外一個(gè):驗(yàn)證匯總中可以設(shè)置headertext,表示驗(yàn)證摘要上方顯示標(biāo)題文本。
(2)ErrorMessage和Text屬性通常需要搭配使用。所不同的是Text屬性的錯(cuò)誤信息一般是簡(jiǎn)短(如“必填”),ErrorMessage屬性的信息應(yīng)該識(shí)別有錯(cuò)誤的表單字段(如“用戶名必須填!”)
6.Customvalidator控件:自定義驗(yàn)證控件
(1)該控件允許用戶根據(jù)程序設(shè)計(jì)需要自定義控件的驗(yàn)證方法。
(2)用戶自定義驗(yàn)證控件里面最重要的是args.Value和args.IsValid,args是函數(shù)的參數(shù)。Value和IsValid都是args的屬性,一定要注意區(qū)別大小寫。
args.Value:獲取要驗(yàn)證的用戶輸入內(nèi)容,比如文本框的內(nèi)容args.IsValid:關(guān)聯(lián)的控件是否通過驗(yàn)證,通過驗(yàn)證通過,就不會(huì)出現(xiàn)ErrorMessage的內(nèi)容。
(3)用戶輸入是否能被3整除
拓展1:要求長(zhǎng)度大于等于3位和輸入內(nèi)容必須能被3整除
長(zhǎng)度必須大于等于3的代碼如下:
protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
{
if(args.Value.Length>=3)
args.IsValid=true;
else
args.IsValid=false;
}
拓展2:CustomValidator是用戶自定義的驗(yàn)證控件,用來響應(yīng)用戶自定義的驗(yàn)證。可以是JS的客戶端函數(shù),也可以是寫在后臺(tái)代碼中的服務(wù)端驗(yàn)證函數(shù)重點(diǎn)內(nèi)容(兩個(gè)屬性):
OnServerValidate:規(guī)定被執(zhí)行的服務(wù)器端驗(yàn)證腳本函數(shù)的名稱ClientValidationFunction:規(guī)定用于驗(yàn)證的自定義客戶端腳本函數(shù)的名稱最終效果如下:
代碼頁面:
客戶端驗(yàn)證:
如果將args.Value替換為TextBox1.Text會(huì)出現(xiàn)TextBox1未定義。
所有必須用:
Var text=document.getElementByld(‘<%=textbox1.ClientID%>)將args.Value替換為text.value。
服務(wù)器驗(yàn)證:
protectedvoidCustomValidator2_ServerValidate(objectsource,ServerValidateEventArgs args)
{
args.IsValid = (args.Value == “服務(wù)端”)。
}