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