ASP.NET驗證器
ASP.NET驗證控件主要用來驗證用戶輸入數據,以確保無用的,未經驗證的或矛盾的數據不會被存儲到服務器中。
ASP.NET提供了以下驗證控件:
- RequiredFieldValidator
- RangeValidator
- CompareValidator
- RegularExpressionValidator
- CustomValidator
- ValidationSummary
BaseValidator類
其它驗證控件類是從BaseValidator
類繼承的,因此它們繼承了它的屬性和方法。 因此,這將有助於查看此基類的屬性和方法,這對於所有驗證控件都是常見的:
編號
方法
描述
1
ControlToValidate
指示要驗證的輸入控件。
2
Display
指示如何顯示錯誤消息。
3
EnableClientScript
指示是否需要客戶端驗證。
4
Enabled
啓用或禁用驗證器。
5
ErrorMessage
指示錯誤字符串信息。
6
Text
如果驗證失敗,將顯示此錯誤文本。
7
IsValid
指示控件的值是否有效。
8
SetFocusOnError
它表示在無效控制的情況下,焦點應該切換到相關的輸入控件。
9
ValidationGroup
該控件所屬的多個驗證器的邏輯組。
10
Validate()
此方法重新驗證控件並更新IsValid
屬性。
RequiredFieldValidator控件
RequiredFieldValidator
控件確保所需字段不爲空。它通常綁定到一個文本框強制輸入到文本框中。
控件的語法如下:
<asp:RequiredFieldValidator ID="rfvcandidate"
runat="server" ControlToValidate ="ddlcandidate"
ErrorMessage="Please choose a candidate"
InitialValue="Please choose a candidate">
</asp:RequiredFieldValidator>
RangeValidator控件
RangeValidator
控件驗證輸入值是否在預定的範圍內。
它有三個特定的屬性:
編號
屬性
描述
1
Type
它定義了數據的類型。可用值包括:貨幣,日期,雙精度,整數和字符串。
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控件
CompareValidator
控件將一個控件中的值與另一個控件中的固定值或值進行比較。
它具有以下特定屬性:
編號
屬性
描述
1
Type
它用來指定數據的類型。
2
ControlToCompare
它指定要與之比較的輸入控件的值。
3
ValueToCompare
它指定了與之比較的常量值。
4
Operator
它指定比較運算符,可用值爲:Equal
,NotEqual
,GreaterThan
,GreaterThanEqual
,LessThan
,LessThanEqual
和DataTypeCheck
。
該控件的基本語法如下所示:
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="CompareValidator">
</asp:CompareValidator>
RegularExpressionValidator
RegularExpressionValidator
允許通過匹配正則表達式的模式來驗證輸入文本。正則表達式在ValidationExpression
屬性中設置。
下表總結了正則表達式的常用語法結構:
編號
字符轉義
描述
1
\b
匹配一個退格符。
2
\t
匹配一個製表符。
3
ValueToCompare
它指定了與之比較的常量值。
4
\r
匹配回車。
5
\v
匹配垂直製表符。
6
\f
匹配換頁
7
\n
匹配一個新的行。
8
\
轉義字符。
除了單字符匹配之外,還可以指定一組可以匹配的字符,稱爲元字符。
編號
元字符
描述
1
.
匹配除\n
之外的任何字符。
2
[abcd]
匹配集合中的任何字符。
3
[^abcd]
匹配不是集合中的任何字符。
4
[2-7a-mA-M]
匹配範圍中指定的任何字符。
5
\w
匹配任何字母數字字符和下劃線。
6
\W
匹配任何非單詞字符。
7
\s
匹配空格字符,如空格,製表符,新行。
8
\S
匹配任何非空白字符。
6
\d
匹配任何十進制字符。
7
\D
匹配任何非十進制字符。
可以使用量詞來指定的字符可能出現次數。
編號
量詞
描述
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
CustomValidator
控件允許爲客戶端和服務器端驗證編寫特定於應用程序的自定義驗證例程。
客戶端驗證通過ClientValidationFunction
屬性完成。 客戶端驗證例程應該用瀏覽器可以理解的腳本語言編寫,例如JavaScript或VBScript。
服務器端驗證例程必須從控件的ServerValidate
事件處理程序中調用。服務器端驗證例程應該用C#
或VB.Net等.Net
語言編寫。
控件的基本語法如下:
<asp:CustomValidator ID="CustomValidator1" runat="server"
ClientValidationFunction=.cvf_func. ErrorMessage="CustomValidator">
</asp:CustomValidator>
ValidationSummary
ValidationSummary
控件不執行任何驗證,但顯示頁面中所有錯誤的摘要。 摘要顯示驗證失敗的所有驗證控件的ErrorMessage
屬性的值。
以下兩個相互包含的屬性列出了錯誤消息:
- ShowSummary:以指定的格式顯示錯誤信息。
- ShowMessageBox:在單獨的窗口中顯示錯誤消息。
控件的語法如下:
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
DisplayMode = "BulletList" ShowSummary = "true" HeaderText="Errors:" />
驗證組
複雜的頁面在不同的面板中提供不同的信息組。在這種情況下,可能需要爲單獨的組分別進行驗證。這種情況是使用驗證組來處理的。
要創建驗證組,應該通過設置其ValidationGroup
屬性將輸入控件和驗證控件放入同一個邏輯組中。
示例
下面的例子描述了一個由所有投票人來填寫的表單信息,分成四個信息段,用來選舉總統。 在這裏,使用驗證控件來驗證用戶輸入。
首先打開Visual Studio,創建一個名稱爲:Validators 的空網站項目,如下圖所示 -
在這個項目名稱上右鍵選擇:添加 -> 添加新項 ,選擇:Web窗體 ,存儲名稱爲: Default.aspx,如下所示 -
這是設計視圖中的表單:
以下是Defalut.aspx 文件的內容:
<%@ 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="選擇您支持的總統"
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="請填寫年齡 (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="確認提交"/>
</td>
</tr>
</table>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
DisplayMode ="BulletList" ShowSummary ="true" HeaderText="錯誤信息提示:" />
</form>
</body>
</html>
以下是Defalut.aspx.cs 文件的內容:
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 = "填寫所有內容";
}
}
}
執行上面啓動項目,可以看到以下結果 -
填寫完成表單所有項目,然後提交,得到以下結果 -
易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com 。
上一篇:ASP.NET管理狀態 下一篇:ASP.NET數據庫訪問(Access)
加QQ羣啦,易百教程官方技術學習羣
QQ羣名稱
羣號
人數
免費
等級
羣介紹
JAVA技術
227270512
2000
否
LV5
Java基礎,JSP(Servlet),JAVA框架,Java高併發架構,Maven等等
MySQL/SQL
418407075
2000
否
LV5
SQL基礎,MySQL基礎,MySQL存儲過程,視圖,觸發器等等
大數據開發
655154550
2000
否
LV5
Spark,zookeeper,kafka,CDH,hive,fulme,hbase等Hadoop雲計算生態圈技術
Python技術
287904175
2000
否
LV5
Python編程,Python Web,Python大數據,Python爬蟲,自然語言處理等
Linux技術
479429477
2000
是
LV1
Redhat/Centos,Ubuntu,Shell,運維,監控等技術
PHP/Web開發者
460153241
1000
是
LV0
PHP基礎,PHP高級,網站優化/架構,JS,HTML,JQuery,前端等Web開發技術
人工智能
456236082
1000
是
LV0
人工智能,深度學習,算法等技術
Oracle數據庫
175248146
1000
是
LV0
SQL基礎,Oracle基礎,Oracle存儲過程,視圖,觸發器等等
Android開發
159629185
1000
是
LV0
Android開發,Android Studio,Kotlin,Dagger等技術
微軟技術
579821706
1000
是
LV0
C#,ASP.Net,VB.Net,ADO.Net,SQL Server,VBA,Excel等技術