ASP.NET驗證控件主要用來驗證用戶輸入數(shù)據(jù),以確保無用的,未經(jīng)驗證的或矛盾的數(shù)據(jù)不會被存儲到服務(wù)器中。
ASP.NET提供了以下驗證控件:
其它驗證控件類是從BaseValidator類繼承的,因此它們繼承了它的屬性和方法。 因此,這將有助于查看此基類的屬性和方法,這對于所有驗證控件都是常見的:
| 編號 | 方法 | 描述 |
|---|---|---|
| 1 | ControlToValidate |
指示要驗證的輸入控件。 |
| 2 | Display |
指示如何顯示錯誤消息。 |
| 3 | EnableClientScript |
指示是否需要客戶端驗證。 |
| 4 | Enabled |
啟用或禁用驗證器。 |
| 5 | ErrorMessage |
指示錯誤字符串信息。 |
| 6 | Text |
如果驗證失敗,將顯示此錯誤文本。 |
| 7 | IsValid |
指示控件的值是否有效。 |
| 8 | SetFocusOnError |
它表示在無效控制的情況下,焦點應(yīng)該切換到相關(guān)的輸入控件。 |
| 9 | ValidationGroup |
該控件所屬的多個驗證器的邏輯組。 |
| 10 | Validate() |
此方法重新驗證控件并更新IsValid屬性。 |
RequiredFieldValidator控件確保所需字段不為空。它通常綁定到一個文本框強制輸入到文本框中。
控件的語法如下:
<asp:RequiredFieldValidator ID="rfvcandidate"
runat="server" ControlToValidate ="ddlcandidate"
ErrorMessage="Please choose a candidate"
InitialValue="Please choose a candidate">
</asp:RequiredFieldValidator>
RangeValidator控件驗證輸入值是否在預(yù)定的范圍內(nèi)。
它有三個特定的屬性:
| 編號 | 屬性 | 描述 |
|---|---|---|
| 1 | Type |
它定義了數(shù)據(jù)的類型??捎弥蛋ǎ贺泿牛掌?,雙精度,整數(shù)和字符串。 |
| 2 | MinimumValue |
它指定范圍的最小值。 |
| 3 | MaximumValue |
它指定范圍的最大值。 |
控件的語法如下:
<asp:RangeValidator ID="rvclass" runat="server" ControlToValidate="txtclass"
ErrorMessage="Enter your class (6 - 12)" MaximumValue="12"
MinimumValue="6" Type="Integer">
</asp:RangeValidator>
CompareValidator控件將一個控件中的值與另一個控件中的固定值或值進(jìn)行比較。
它具有以下特定屬性:
| 編號 | 屬性 | 描述 |
|---|---|---|
| 1 | Type |
它用來指定數(shù)據(jù)的類型。 |
| 2 | ControlToCompare |
它指定要與之比較的輸入控件的值。 |
| 3 | ValueToCompare |
它指定了與之比較的常量值。 |
| 4 | Operator |
它指定比較運算符,可用值為:Equal,NotEqual,GreaterThan,GreaterThanEqual,LessThan,LessThanEqual和DataTypeCheck。 |
該控件的基本語法如下所示:
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="CompareValidator">
</asp:CompareValidator>
RegularExpressionValidator允許通過匹配正則表達(dá)式的模式來驗證輸入文本。正則表達(dá)式在ValidationExpression屬性中設(shè)置。
下表總結(jié)了正則表達(dá)式的常用語法結(jié)構(gòu):
| 編號 | 字符轉(zhuǎn)義 | 描述 |
|---|---|---|
| 1 | \b |
匹配一個退格符。 |
| 2 | \t |
匹配一個制表符。 |
| 3 | ValueToCompare |
它指定了與之比較的常量值。 |
| 4 | \r |
匹配回車。 |
| 5 | \v |
匹配垂直制表符。 |
| 6 | \f |
匹配換頁 |
| 7 | \n |
匹配一個新的行。 |
| 8 | \ |
轉(zhuǎn)義字符。 |
除了單字符匹配之外,還可以指定一組可以匹配的字符,稱為元字符。
| 編號 | 元字符 | 描述 |
|---|---|---|
| 1 | . |
匹配除\n之外的任何字符。 |
| 2 | [abcd] |
匹配集合中的任何字符。 |
| 3 | [^abcd] |
匹配不是集合中的任何字符。 |
| 4 | [2-7a-mA-M] |
匹配范圍中指定的任何字符。 |
| 5 | \w |
匹配任何字母數(shù)字字符和下劃線。 |
| 6 | \W |
匹配任何非單詞字符。 |
| 7 | \s |
匹配空格字符,如空格,制表符,新行。 |
| 8 | \S |
匹配任何非空白字符。 |
| 6 | \d |
匹配任何十進(jìn)制字符。 |
| 7 | \D |
匹配任何非十進(jìn)制字符。 |
可以使用量詞來指定的字符可能出現(xiàn)次數(shù)。
| 編號 | 量詞 | 描述 |
|---|---|---|
| 1 | * |
零或多個匹配 |
| 2 | + |
一個或多個匹配。 |
| 3 | ? |
零個或一個匹配。 |
| 4 | {N} |
N個匹配 |
| 5 | {N,} |
至少N次匹配 |
| 6 | {N,M} |
N到M次匹配 |
控件的語法如下:
<asp:RegularExpressionValidator ID="string" runat="server" ErrorMessage="string"
ValidationExpression="string" ValidationGroup="string">
</asp:RegularExpressionValidator>
CustomValidator控件允許為客戶端和服務(wù)器端驗證編寫特定于應(yīng)用程序的自定義驗證例程。
客戶端驗證通過ClientValidationFunction屬性完成。 客戶端驗證例程應(yīng)該用瀏覽器可以理解的腳本語言編寫,例如JavaScript或VBScript。
服務(wù)器端驗證例程必須從控件的ServerValidate事件處理程序中調(diào)用。服務(wù)器端驗證例程應(yīng)該用C#或VB.Net等.Net語言編寫。
控件的基本語法如下:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ClientValidationFunction=.cvf_func. ErrorMessage="CustomValidator">
</asp:CustomValidator>
ValidationSummary控件不執(zhí)行任何驗證,但顯示頁面中所有錯誤的摘要。 摘要顯示驗證失敗的所有驗證控件的ErrorMessage屬性的值。
以下兩個相互包含的屬性列出了錯誤消息:
控件的語法如下:
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
DisplayMode = "BulletList" ShowSummary = "true" HeaderText="Errors:" />
復(fù)雜的頁面在不同的面板中提供不同的信息組。在這種情況下,可能需要為單獨的組分別進(jìn)行驗證。這種情況是使用驗證組來處理的。
要創(chuàng)建驗證組,應(yīng)該通過設(shè)置其ValidationGroup屬性將輸入控件和驗證控件放入同一個邏輯組中。
下面的例子描述了一個由所有投票人來填寫的表單信息,分成四個信息段,用來選舉總統(tǒng)。 在這里,使用驗證控件來驗證用戶輸入。
首先打開Visual Studio,創(chuàng)建一個名稱為:Validators 的空網(wǎng)站項目,如下圖所示 -

在這個項目名稱上右鍵選擇:添加 -> 添加新項 ,選擇:Web窗體 ,存儲名稱為: Default.aspx,如下所示 -

這是設(shè)計視圖中的表單:

以下是Defalut.aspx 文件的內(nèi)容:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>驗證器示例</title>
</head>
<body>
<form id="form1" runat="server">
<table style="width: 66%;">
<tr>
<td class="style1" colspan="3" align="center">
<asp:Label ID="lblmsg"
Text="選擇您支持的總統(tǒng)"
runat="server" style="font-weight:bold;"/>
</td>
</tr>
<tr>
<td class="style3" style="width:64px;">
候選人:
</td>
<td class="style2">
<asp:DropDownList ID="ddlcandidate" runat="server" style="width:239px">
<asp:ListItem>請選擇一個候選人</asp:ListItem>
<asp:ListItem>渣渣輝</asp:ListItem>
<asp:ListItem>李布朗</asp:ListItem>
<asp:ListItem>小布什</asp:ListItem>
<asp:ListItem>特朗撲</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvcandidate"
runat="server" ControlToValidate ="ddlcandidate"
ErrorMessage="請選擇一個候選人"
InitialValue="請選擇一個候選人">
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style3">
性別:
</td>
<td class="style2">
<asp:RadioButtonList ID="rblhouse" runat="server" RepeatLayout="Flow">
<asp:ListItem>男</asp:ListItem>
<asp:ListItem>女</asp:ListItem>
<asp:ListItem>其它</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvhouse" runat="server"
ControlToValidate="rblhouse" ErrorMessage="選擇性別" >
</asp:RequiredFieldValidator>
<br />
</td>
</tr>
<tr>
<td class="style3">
年齡:
</td>
<td class="style2">
<asp:TextBox ID="txtclass" runat="server"></asp:TextBox>
</td>
<td>
<asp:RangeValidator ID="rvclass"
runat="server" ControlToValidate="txtclass"
ErrorMessage="請?zhí)顚懩挲g (16 - 70)" MaximumValue="70"
MinimumValue="16" Type="Integer">
</asp:RangeValidator>
</td>
</tr>
<tr>
<td class="style3">
Email:
</td>
<td class="style2">
<asp:TextBox ID="txtemail" runat="server" style="width:250px">
</asp:TextBox>
</td>
<td>
<asp:RegularExpressionValidator ID="remail" runat="server"
ControlToValidate="txtemail" ErrorMessage="請輸入電子郵件地址"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="style3" align="center" colspan="3">
<asp:Button ID="btnsubmit" runat="server" onclick="btnsubmit_Click"
style="text-align: center;width:140px" Text="確認(rèn)提交"/>
</td>
</tr>
</table>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
DisplayMode ="BulletList" ShowSummary ="true" HeaderText="錯誤信息提示:" />
</form>
</body>
</html>
以下是Defalut.aspx.cs 文件的內(nèi)容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
}
protected void btnsubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
lblmsg.Text = "感謝支持";
}
else
{
lblmsg.Text = "填寫所有內(nèi)容";
}
}
}
執(zhí)行上面啟動項目,可以看到以下結(jié)果 -

填寫完成表單所有項目,然后提交,得到以下結(jié)果 -
