ASP.NET - 验证程序
ASP.NET 验证控件验证用户输入数据,以确保不会存储无用、未经身份验证或矛盾的数据。
ASP.NET 提供以下验证控件:
- RequiredFieldValidator
- RangeValidator
- CompareValidator
- RegularExpressionValidator
- CustomValidator
- ValidationSummary
BaseValidator类
验证控件类继承自 BaseValidator 类,因此它们继承了它的属性和方法。 因此,了解一下该基类的属性和方法会有所帮助,这些属性和方法对于所有验证控件都是通用的:
| 成员 | 描述 |
|---|---|
| ControlToValidate | 表示要验证的输入控件。 |
| Display | 指示如何显示错误消息。 |
| EnableClientScript | 指示是否进行客户端验证。 |
| Enabled | 启用或禁用验证器。 |
| ErrorMessage | 表示错误字符串。 |
| Text | 验证失败时显示的错误文本。 |
| IsValid | 指示控件的值是否有效。 |
| SetFocusOnError | 指示当控件无效时是否将焦点切换到相关的输入控件。 |
| ValidationGroup | 此控件所属的多个验证器的逻辑组。 |
| Validate() | 此方法重新验证控件并更新 IsValid 属性。 |
RequiredFieldValidator 控件
RequiredFieldValidator 控件确保必填字段不为空。 它通常绑定到文本框以强制输入到文本框中。
The syntax of the control is as given:
<asp:RequiredFieldValidator ID="rfvcandidate" runat="server" ControlToValidate ="ddlcandidate" ErrorMessage="Please choose a candidate" InitialValue="Please choose a candidate"> </asp:RequiredFieldValidator>
RangeValidator 控件
RangeValidator 控件验证输入值是否在预定范围内。
它具有三个特定属性:
| 属性 | 描述 |
|---|---|
| Type | 它定义数据的类型。 可用值包括:货币、日期、双精度、整数和字符串。 |
| MinimumValue | 指定范围的最小值。 |
| 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 控件将一个控件中的值与固定值或另一控件中的值进行比较。
它具有以下特定属性:
| 属性 | 描述 |
|---|---|
| Type | 它指定数据类型。 |
| ControlToCompare | 它指定要比较的输入控件的值。 |
| ValueToCompare | 它指定要比较的常量值。 |
| Operator | 指定比较运算符,可用值有:Equal、NotEqual、GreaterThan、GreaterThanEqual、LessThan、LessThanEqual 和 DataTypeCheck。 |
该控件的基本语法如下:
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator"> </asp:CompareValidator>
正则表达式验证器
RegularExpressionValidator 允许通过匹配正则表达式的模式来验证输入文本。 正则表达式在 ValidationExpression 属性中设置。
下表总结了正则表达式的常用语法结构:
| 字符转义 | 描述 |
|---|---|
| \b | 匹配退格键。 |
| \t | 匹配制表符。 |
| \r | 匹配回车符。 |
| \v | 匹配垂直制表符。 |
| \f | 匹配换页符。 |
| \n | 匹配新行。 |
| \ | 转义字符。 |
除了单字符匹配之外,还可以指定一类可匹配的字符,称为元字符。
| 元字符 | 描述 |
|---|---|
| . | 匹配除\n之外的任何字符。 |
| [abcd] | 匹配集合中的任何字符。 |
| [^abcd] | 排除集合中的任何字符。 |
| [2-7a-mA-M] | 匹配范围内指定的任何字符。 |
| \w | 匹配任何字母数字字符和下划线。 |
| \W | 匹配任何非单词字符。 |
| \s | 匹配空白字符,例如空格、制表符、换行符等。 |
| \S | 匹配任何非空白字符。 |
| \d | 匹配任何十进制字符。 |
| \D | 匹配任何非十进制字符。 |
可以添加量词来指定字符出现的次数。
| 量词 | 描述 |
|---|---|
| * | 零个或多个匹配项。 |
| + | 一个或多个匹配项。 |
| ? | 零个或一个匹配项。 |
| {N} | N 个匹配项。 |
| {N,} | N 个或更多匹配项。 |
| {N,M} | N 和 M 场比赛之间。 |
该控件的语法如下:
<asp:RegularExpressionValidator ID="string" runat="server" ErrorMessage="string" ValidationExpression="string" ValidationGroup="string"> </asp:RegularExpressionValidator>
CustomValidator 控件
CustomValidator 控件允许为客户端和服务器端验证编写特定于应用程序的自定义验证例程。
客户端验证是通过 ClientValidationFunction 属性完成的。 客户端验证例程应使用浏览器可以理解的脚本语言(例如 JavaScript 或 VBScript)编写。
必须从控件的 ServerValidate 事件处理程序调用服务器端验证例程。 服务器端验证例程应使用任何 .Net 语言编写,例如 C# 或 VB.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 属性将其放入同一逻辑组。
示例
下面的示例描述了一个表格,该表格由一所学校的所有学生填写,分为四个部分。 在这里,我们使用验证控件来验证用户输入。
这是设计视图中的表单:
内容文件代码如下:
<form id="form1" runat="server">
<table style="width: 66%;">
<tr>
<td class="style1" colspan="3" align="center">
<asp:Label ID="lblmsg"
Text="President Election Form : Choose your president"
runat="server" />
</td>
</tr>
<tr>
<td class="style3">
Candidate:
</td>
<td class="style2">
<asp:DropDownList ID="ddlcandidate" runat="server" style="width:239px">
<asp:ListItem>Please Choose a Candidate</asp:ListItem>
<asp:ListItem>M H Kabir</asp:ListItem>
<asp:ListItem>Steve Taylor</asp:ListItem>
<asp:ListItem>John Abraham</asp:ListItem>
<asp:ListItem>Venus Williams</asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvcandidate"
runat="server" ControlToValidate ="ddlcandidate"
ErrorMessage="Please choose a candidate"
InitialValue="Please choose a candidate">
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td class="style3">
House:
</td>
<td class="style2">
<asp:RadioButtonList ID="rblhouse" runat="server" RepeatLayout="Flow">
<asp:ListItem>Red</asp:ListItem>
<asp:ListItem>Blue</asp:ListItem>
<asp:ListItem>Yellow</asp:ListItem>
<asp:ListItem>Green</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvhouse" runat="server"
ControlToValidate="rblhouse" ErrorMessage="Enter your house name" >
</asp:RequiredFieldValidator>
<br />
</td>
</tr>
<tr>
<td class="style3">
Class:
</td>
<td class="style2">
<asp:TextBox ID="txtclass" runat="server"></asp:TextBox>
</td>
<td>
<asp:RangeValidator ID="rvclass"
runat="server" ControlToValidate="txtclass"
ErrorMessage="Enter your class (6 - 12)" MaximumValue="12"
MinimumValue="6" 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="Enter your email"
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" Text="Submit" style="width:140px" />
</td>
</tr>
</table>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
DisplayMode ="BulletList" ShowSummary ="true" HeaderText="Errors:" />
</form>
提交按钮背后的代码:
protected void btnsubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
lblmsg.Text = "Thank You";
}
else
{
lblmsg.Text = "Fill up all the fields";
}
}

