国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

使用ASP.NET定制數據驗證控件

2024-07-10 13:06:19
字體:
來源:轉載
供稿:網友

數據驗證控件是asp.net中專門用來驗證表單用戶輸入的控件。比如,requiredfieldvalidation就是一個專門用來驗證用戶是否已經輸入的控件,使用這個控件,可以保證用戶一定輸入了表單的某個表單項(比如數據輸入框)。另外,asp.net還專門提供了以下數據驗證控件:

1. requiredfieldvalidator:檢查用戶是否輸入;

2. comparevalidator:檢查兩個表單輸入項的輸入信息是否存在某種指定關系,比如大、等于等;

3. rangevalidator:檢查用戶輸入是否在某一指定范圍;

4. regularexpressionvalidator:檢查用戶輸入是否符合某一指定的正則表達式要求;

5. customvalidator: 檢查用戶輸入是否符合開發者指定的驗證邏輯規則。

本文的目的不是在于討論以上所有控件的用法,如果希望了解其他控件,可以參看:

http://samples.gotdotnet.com /quickstart /aspplus/doc /webvalidation.aspx。

customvalidator控件概述

簡單地使用前面提到的前四個數據驗證控件,就可以實現我們一般開發的大部分數據表單的驗證要求。然而,有時候我們需要驗證一些比較復雜的表單。想像一下,我們有一個比較復雜的調查表,該調查表包含一個有很多單選按鈕和多選按鈕的表單,一些多選按鈕和個人的愛好相對應,比如游泳、體育、閱讀等,調查表希望被調查人選擇自己的所有愛好。在這些選項下面,提示如下文字:“如果你提示有體育和游泳兩種愛好,請選擇您什么時候開始學習游泳”,在這些文字下方放置一些標識年齡段的單選按鈕,這些按鈕是否有效取決于我們在前面提到的多選按鈕的選擇情況。在以上的驗證情況中,我們就要使用到customvalidator數據驗證控件。

在所有的asp.net數據驗證控件中,都有一個“controltovalidate”的控件屬性需要設置,這個屬性用來指定表單中需要驗證的表單項。在customvalidator數據驗證控件中,需要做以下事情:

1. 讀取需要customvalidator驗證的表單項值;

2. 執行驗證操作;

3. 決定被驗證表單項是否符合驗證要求。

在其他內建控件中,以上步驟用戶是不知道也不要理睬的,但是,在使用customvalidator的時候,我們需要自己動手實現以上步驟。為了實現以上步驟,我們需要編寫一個服務器端數據驗證函數,該函數的樣式如下:

sub functionname(sender as object, args as servervalidateeventargs)

……

end sub

注意以上函數的args參數,它是functionname函數的第二個參數,這個參數有以下兩個屬性:

1. value:被驗證數據表單的值。

2. isvalid:驗證是否通過。如果通過,isvalid的值是true; 如果沒有通過,其值為false。

在使用customvalidator的時候,我們不但要設置“controltovalidate”屬性,我們還必須設置onservervalidate事件來處理服務器端的數據驗證動作。

建立一個簡單的

customvalidator控件

假設現在建立一個與數學有關的網站,在這個網站,我們要求瀏覽者提供自己喜歡的質數,以此來提高我們網站的訪問量。在asp.net中,沒有一個現成的可以專門驗證質數的服務器端數據驗證控件,這樣,我們就有必要用到customvalidator控件。

以下例子用來驗證用戶輸入的數是不是質數。在這個表單中,有一個用戶輸入數據的textbox控件和一個button控件,還有用于驗證是不是質數的customvalidator控件,和兩個用于保證用戶輸入為正數的comparevalidator控件。

< script language=“vb” runat=“server” >sub btnsubmit_click(sender as object, e as eventargs)if page.isvalid then  response.write(“< font color=““red””>  < i>”& txtprimenumber.text & “is, indeed, a good prime number.  <  /i><  /font>”)else    response.write(“< font color=““red””>< i>” & txtprimenumber.text & “is < b>not< /b> a prime number.< /i>< /font>”)    end if  end sub  sub primenumbercheck(sender as object, args as  servervalidateeventargs)    dim iprime as integer = cint(args.value),iloop as integer, isqrt as integer = cint(math.sqrt(iprime))    for iloop = 2 to isqrt      if iprime mod iloop = 0 then        args.isvalid = false        exit sub      end if    next    args.isvalid = true  end sub< /script>< form method=“post” runat=“server”>  enter your favorite prime number:< asp:textbox id=“txtprimenumber” runat=“server” />< %-- 建立customvalidator 控件 --%>  < asp:customvalidator runat=“server”     id=“custprimecheck”    controltovalidate=“txtprimenumber”    onservervalidate=“primenumbercheck”    errormessage=“invalid prime number”/>< %-- 建立兩個comparevalidator控件:第一個保證輸入為數字;第二個保證輸入為正數 --%>  < asp:comparevalidator runat=“server”  id=“compprimenumber”operator=“datatypecheck”  type=“integer”  display=“dynamic” controltovalidate=  “txtprimenumber”errormessage =  “you must enter an integer value.”/>  < asp:comparevalidator runat=“server”   id=“compprimenumberpositive”operator=“greaterthan”  type=“integer”  display=“dynamic” valuetocompare=“0”  controltovalidate=“txtprimenumber”  errormessage =“you must enter a value   greater than zero.”/>  < p>< asp:button id=“btnsubmit” runat=  “server”onclick=“btnsubmit_click” text=“submit” />< /form>

如果對判定質數不是太熟悉,可能對于以上的primenumbercheck事件處理感覺比較迷惑。首先,將用戶在txtprimenumber輸入的數據通過事件的args.value傳送給txtprimenumber,然后,將用戶的輸入開平方根,再將用戶輸入的數字除以從2到剛才算出的平方根之間的每一個數字。如果出現結果為零的情況,說明用戶輸入的數字不是質數,設置args.isvalid為false; 如果全部為零,說明用戶輸入合法,設置args.isvalid為true。

客戶端驗證

asp.net內建數據驗證控件的一大特點就是它們的所有驗證都是在客戶端進行的,不需經過服務器端,而customvalidator控件的錯誤驗證完全是通過服務器端實現的。必須意識到的一點是,不管是否通過客戶端實現數據驗證,服務器端的數據驗證是一定會產生的。增加客戶端驗證的功能,只是讓我們的數據驗證控件更加友好。

為了實現客戶端驗證的功能,我們必須使用javascript或者vbscript寫一個腳本函數,因為vbscript只支持ie瀏覽器,因此,這里我們采用javascript來編寫這個函數:

< script language=“javascript” >< !--  function checkprime(sender, args)  { var iprime = parseint(args.value);    var isqrt = parseint(math.sqrt(iprime));    for (var iloop=2; iloop< =isqrt; iloop++)      if (iprime % iloop == 0)       { args.isvalid = false;         return;      }  args.isvalid = true;  }// -->< /script >

在這個例子里面,我們輸入數字6,然后按“tab”按鈕。在高版本的瀏覽器里面,我們將看到來自customvalidator控件的錯誤信息,這樣,我們的customvalidator控件也就有了客戶端驗證功能。在以上代碼中,可能已經注意到我們并沒有定義數據sender和args的類型,因為在腳本語言中,是沒有嚴格的數據類型定義的。

為了實現客戶端數據驗證,惟一要做的就是在customvalidator控件定義中加入以下語句:clientvalidationfunction=“checkprime”,這里,其實就是指定自定義驗證控件的客戶端驗證函數。在這個例子里,前面定義的“checkprime”函數就是客戶端驗證函數。

總結

上面我們介紹了asp.net中幾乎是功能最靈活的數據驗證控件customvalidator的使用,介紹了customvalidator控件的服務器端驗證和客戶端驗證的實現。盡管在實際的開發工作中,可能我們使用asp.net的內置數據驗證控件幾乎完全可以滿足我們的開發要求,但是若能了解customvalidator控件的使用和特點將會更有利于解決在工作中碰到的數據驗證問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善盟| 商洛市| 凤翔县| 卢湾区| 盐源县| 晋中市| 府谷县| 日土县| 尼玛县| 景洪市| 宝坻区| 家居| 吉木乃县| 宁阳县| 额尔古纳市| 高要市| 庆元县| 奈曼旗| 英德市| 西吉县| 龙口市| 曲靖市| 班戈县| 会东县| 铜梁县| 黄骅市| 色达县| 长寿区| 嵊泗县| 开化县| 特克斯县| 巴南区| 扎赉特旗| 牟定县| 扎赉特旗| 巨野县| 井研县| 米脂县| 仪陇县| 招远市| 商都县|