1. 程式人生 > >ASP.net驗證控制元件

ASP.net驗證控制元件

       ASP.net提供了6種驗證控制元件,這些控制元件不但可以使程式設計師輕鬆地實現對使用者輸入的驗證,而且還可以選擇驗證在伺服器端進行還是在客戶端進行。這6種驗證控制元件分別是:

1.RequiredFieldValidator控制元件(空值驗證):驗證控制元件內是否有資料輸入,它是非空驗證控制元件

 屬性:

ControlToValidate:必須賦值的屬性,表示要進行驗證的控制元件的ID

ErrorMessage:驗證失敗時顯示的錯誤訊息的文字

Display:錯誤訊息的顯示方式,該值是一個列舉值,有3個值:

Static,表示作為頁面佈局的物理組成部分驗證程式內容

None

,表示從不內聯顯示的驗證程式內容

DyNamic,表示驗證失敗時動態新增到頁面中的驗證程式內容

EnableClientScript:指示是否啟用客戶端驗證

 程式碼:

<tr>
   <td class="auto-style2">
       非空驗證</td>
   <td class="auto-style3">
       使用者名稱:</td>
   <td class="auto-style1">
   	<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
   	<asp:RequiredFieldValidator ID="rfv" runat="server" ErrorMessage="使用者名稱不能為空!" ControlToValidate="txtUserName" Display="Dynamic" ForeColor="Red"></asp:RequiredFieldValidator>
   </td>
</tr>

2.CompareValidator控制元件(比較控制元件):對一個控制元件中的值與另一個控制元件中的值或某個常數值進行比較

 屬性:

ControlToValidate:表示要進行驗證的控制元件的ID

CultureInvariantValues:該值指示是否在比較之前將值轉換為非特定區域性格式

Operator:要執行的比較操作,該值是一個列舉值

Equal:相等;NotEqual:不相等

GreaterThanEqual:大於;GreaterThanEqual:大於等於

LessThan:小於;LessThanEqual:小於等於

DataTypeCheck:輸入到驗證控制元件中的值與

BaseCompareValidator.Type屬性指定的資料型別之間的資料型別比較,如果無法將該值轉換為指定的資料型別,則驗證失敗

Type:在比較之前將所比較的值轉換到的資料型別

RenderUplevel:該值指示客戶端的瀏覽器是否支援“上一級”呈現

Text:驗證失敗時控制元件中顯示的文字

ValueToCompare:該值要與驗證控制元件中的值進行比較

 程式碼:

<tr>
    <td class="auto-style2" rowspan="2">
        比較驗證</td>
    <td class="auto-style3">
        密碼:</td>
    <td class="auto-style1">
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox2" ControlToValidate="TextBox3" ErrorMessage="兩次密碼不一致!" ForeColor="Red"></asp:CompareValidator>
    </td>
</tr>
<tr>
    <td class="auto-style3">
        重複密碼:</td>
    <td class="auto-style1">
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
    </td>
</tr>

3.RangeValidator控制元件(範圍驗證):驗證使用者的輸入是否在指定的範圍內。它可以檢查數字對、字幕對和日期對限定的範圍,其中邊界表示為常數。

 屬性:

MaximumValue:驗證範圍的最大值

MinimumValue:驗證範圍的最小值

 程式碼:

<tr>
    <td class="auto-style2">範圍驗證</td>
    <td class="auto-style3">年齡:</td>
    <td class="auto-style1">
        <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
        <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox4" ErrorMessage="您的年齡不在註冊範圍內,請不要註冊!" ForeColor="Red" MaximumValue="50" MinimumValue="20"></asp:RangeValidator>
    </td>
</tr>

4.RegularExpressionValidator控制元件(正則表示式):驗證控制元件的值是否與某個正則表示式所定義的模式相匹配。通過這種型別的驗證,可以檢查可預知的字元序列,如身份證號碼、點知郵件地址、電話號碼、郵政編碼等的字元序列。

正則表示式(ValidationExpression):是由普通字元與特殊字元組成的文字模式,該模式描述在查詢文字主體時待匹配的一個活多個字串,正則表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。ValidationExpression屬性中用到的字元表示如下:

"\w"表示任何單字元匹配,包括下劃線;

"+" 表示匹配前一個字元一次或多次

"." 表示任意字元;

"*" 表示和其他表示式一起,表示容易組合;

"[A-Z]" 表示任意大寫字母;

"\d" 表示一個數字;

"^" 表示匹配輸入的開始位置

(在以上表達式中,引號不包括在內)

 程式碼:

<tr>
    <td class="auto-style2">正則表示式驗證</td>
    <td class="auto-style3">郵箱:</td>
    <td class="auto-style1">
        <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox5" ErrorMessage="請輸入正確的郵箱地址!" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
    </td>
</tr>

5.CustomValidator控制元件(自定義驗證):自定義函式驗證

 屬性:

ClientValidationFunction:驗證的自定義客戶端指令碼函式的名稱

ServarValidate:在伺服器上執行驗證時發生

 程式碼:

<tr>
    <td class="auto-style2">自定義驗證</td>
    <td class="auto-style3">請任意填寫一個偶數:</td>
    <td class="auto-style1">
        <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
        <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox6" ErrorMessage="請輸入偶數!" OnServerValidate ="CumstomValidator" ForeColor="Red"></asp:CustomValidator>
    </td>
</tr>

 客戶端驗證:

   protected void CumstomValidator(object source, ServerValidateEventArgs args)
   {
      int i = Convert.ToInt32(args.Value);
      if (i%2==0)
      {
          args.IsValid = true;                
      }
      else
      {
          args.IsValid = false;
      }
   }

6.ValidationSummary控制元件(驗證彙總):允許在單個位置概述網頁上所有驗證控制元件的錯誤訊息。該控制元件的功能就是手機所有驗證控制元件的錯誤資訊然後顯示到單個位置上。

Validationsummary控制元件有許多用於顯示錯誤資訊模式和顯示錯誤資訊方式的屬性,這些屬性是其它驗證控制元件所不具備的,它的顯示資訊由每個驗證控制元件的ErrorMessage屬性指定的

displayMode:驗證摘要的顯示模式,是一個列舉值

List,驗證摘要顯示在列表中

BulletList:驗證摘要顯示在專案符號列表中

SingleParagraph:驗證摘要顯示在單個段落內

ShowMessageBox:是否在訊息框中顯示驗證摘要

ShowSummary:是否內聯顯示驗證摘要

HeaderText:顯示控制元件標題

 程式碼:

<tr>
    <td class="auto-style4">驗證資訊彙總</td>
    <td class="auto-style5" colspan="2">
        <asp:ValidationSummary ID="ValidationSummary1" runat="server" ForeColor="Red" ShowMessageBox ="true" />
    </td>
</tr>

例項效果:未點選“註冊”按鈕前

填寫錯誤的資訊,點選“註冊”按鈕

小結:

    ASP.net的這6種驗證控制元件,可以通過在屬性頁設定相應屬性或程式碼來完成相應的操作,總體來說比較簡單。驗證控制元件是Web開發的基礎知識,它在一定程式上保證了程式的健壯性和友好性,更方便了使用者的使用,是BS學習的必備知識

PS:asp.net驗證控制元件中常用的正則表示式:

   只能輸入數字:“^[0-9]*$”

   只能輸入n位的數字:“^\d{n}$”

   只能輸入至少n位數字:“^\d{n,}$”

   只能輸入m-n位的數字:“^\d{m,n}$”

   只能輸入零和非零開頭的數字:“^(0|[1-9][0-9]*)$”

   只能輸入有兩位小數的正實數:“^[0-9]+(.[0-9]{2}) $”

   只能輸入有1-3位小數的正實數:“^[0-9]+(.[0-9]{1,3}) $”

   只能輸入非零的正整數:“^+ [1-9][0-9]*$”

   只能輸入非零的負整數:“^-[1-9][0-9]*$”

   只能輸入長度為3的字元:“^.{3}$”

   只能輸入由26個英文字母組成的字串:“^[A-Za-z]+$”

   只能輸入由26個大寫英文字母組成的字串:“^[A-Z]+$”

   只能輸入由26個小寫英文字母組成的字串:“^[a-z]+$”

   只能輸入由數字和26個英文字母組成的字串:“^[A-Za-z0-9]+$”

   只能輸入由數字、26個英文字母或者下劃線組成的字串:“^\w+$”

   驗證使用者密碼:“^[a-zA-Z]\w{5,17}$”正確格式為:以字母開頭,長度在6-18之間, 只能包含字元、數字和下劃線。

   驗證是否含有^%&’,;= $”等字元:“[^%&',;= $x22]+”

   只能輸入漢字:“^[u4e00-u9fa5],{0,}$”

   驗證Email地址:“^\w+[-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$”

   驗證電話號碼:“^((\d{3,4})|\d{3,4}-) \d{7,8}$”正確格式為:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,“XXX-   XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。

   驗證身份證號(15位或18位數字):“^d{15}|d{}18$”

   驗證一年的12個月:“^(0 [1-9]|1[0-2])$”正確格式為:“01”-“09”和“1”“12”

   驗證一個月的31天:“^((0 [1-9])|((1|2)[0-9])|30|31)$” 正確格式為:“01”“09”和“1”“31”。