2.1 数据验证控件
2.1.1 数据验证的方式
数据验证有 3 种方式
- 后端代码验证:需要将数据提交给服务器来验证
- JavaScript 验证:无须服务器参与,但有潜在漏洞
- 服务器验证控件:弥补前两种输入验证的缺陷
2.1.2 常用的验证控件
ASP.NET 提供了 5 种验证控件和 1 个摘要控件
在Visual Studio 2017 中,验证控件可以在“工具箱”的“验证”栏中找到
2.2 非空和比较验证控件
2.2.1 非空验证控件
RequiredFieldValidator 控件要求用户在页面上输入必填的内容,常用于文本框“不能为空”的验证。该控件常与其他验证控件一同实现有效性验证
RequiredFieldValidator 控件的常用属性
- ControlToValidate :要验证的控件的 ID(所有验证控件都有该属性)
- Text :验证出错时的提示(所有验证控件都有该属性)
- ErrorMessage :提交给汇总控件的错误信息。如果 Text 属性为空,则验证出错,将显示该信息,所有验证控件都有该属性
登录页面中,对用户名对应控件和密码对应控件进行非空验证
示例:
用户名<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUserName" ErrorMessage="请输入用户名" ForeColor="Red"></asp:RequiredFieldValidator>
密码<asp:TextBox ID="txtPwd" runat="server" TextMode="Password">
</asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtPwd" ErrorMessage="请输入密码" ForeColor="Red"></asp:RequiredFieldValidator>
<div><asp:Label ID="lblMessage" runat="server" Text=""></asp:Label></div>
<div><asp:Button ID="btnLogin" Text=" 登录 " runat="server"/></div>
2.2.2 比较验证控件
CompareValidator 控件用于执行数据类型检查,或比较一个值和另一个值,以确定这两个值是否与比较运算符指定的关系相匹配
CompareValidator控件的常用属性
- ControlToValidate:要验证的控件的 ID(所有验证控件都有该属性)
- ControlToCompare:用于与要验证的控件进行比较的控件的 ID
- Type :设置比较类型(如字符串、整型等),不同类型的比较会出错
- Operator :设置比较运算符,如等于(Equal)、大于等于(GreaterThanEgual)、小于等于(LessThanEqual)、大于(GreaterThan)和小于(LessThan)等。默认设置为等于
- ValueToCompare:用于比较的值
注册页面中,使用 CompareValidator 控件验证两次密码输入的值是否相同
示例:
用户名 <asp:TextBox ID="txtUserName" runat="server" Width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtUserName" ErrorMessage=" 请输入用户名 "
ForeColor="Red"></asp:RequiredFieldValidator>
密码<asp:TextBox ID="txtPwd" runat="server" TextMode="Password" width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtPwd" ErrorMessage=" 请输入密码 " ForeColor="Red">
</asp:RequiredFieldValidator>
确认密码<asp:TextBox ID="txtRePwd" runat="server" TextMode="Password" width="150px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="txtRePwd" ErrorMessage=" 请再次输入密码 "
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="txtPwd" ControlToValidate="txtRePwd" ErrorMessage="两次密码输入不一致 " ForeColor="Red"></asp:CompareValidator>
2.3 范围和正则表达式验证控件
2.3.1 范围验证控件
RangeValidator控件用于检查输入的值是否在确定的最小值和最大值之间
RangeValidator控件的常用属性
- ControlToValidate :要验证的控件的 ID(所有验证控件都有该属性)
- MaximumValue :范围的上界(最大值)
- MinimumValue :范围的下界(最小值)
- Type :验证类型(字符串、整型、双精度、日期和货币 5 种)
2.3.2 正则表达式验证控件
ReqularExpressionValidator 控件用于检查用户的输入是否与预定义的正则表达式相匹配
正则表达式是采用字符模式匹配字符串型数据的专用语法
选择控件的 ReqularExpression 属性就可以打开正则表达式编辑器,然后选择所要使用的正则表达式
提醒:
常见的正则表达式如下:
- 非负数(正整数 +0):^\d+$
- 正整数:^[0-9]*[1-9][0-9]*$
- 匹配中文字符的正则表达式:[\u4e00-\u9fa5]
- 匹配双字节字符(包括汉字在内):[^\x00-\xff]
- 货币(非负数,要求小数点后有两位数字):\d+(\.\d=d)?
- 货币(正数或负数):(-)?\d+(\.\d=d)?
示例:
在上个示例中,添加电子邮箱,使用正则表达式验证电子邮箱
电子邮箱 <asp:TextBox ID="txtEmail" runat="server" width="150px"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server" ControlToValidate="txtEmail" ErrorMessage=" 邮箱格式不正确 " ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator>
2.4 自定义验证控件
2.4.1 自定义验证控件的使用
CustomValidator 控件用于执行自定义验证,例如,需要编写自定义代码,从数据库中检测用户名是否已被使用
- ControlToValidate :要验证的控件的 ID(所有验证控件都有该属性)
- ClientValidationFunction:设置客户端验证的脚本函数
- ServerValidate(事件):服务器端验证的方法
为注册页面添加用户名检查功能,以验证用户名是否已经存在
示例:
后端页面代码:
protected void IsUserNameExist(object source,ServerValidateEventArgs args)
{
if(args.Value=="mst")
{
args.IsValid=false;
}
else
{
args.IsValid=true;
}
}
2.4.2 错误汇总验证控件
ValidationSummary 控件用于在页面上显示所有验证错误的摘要,它收集本页中所有验证控件的错误信息(ErrorMessage 属性),进行组织并统一显示
ValidationSummary 控件只能以简单列表、段落或弹出框的形式显示错误信息
- ShowMessageBox :是否显示弹出的提示消息
- ShowSummary:是否显示该报告内容
2.4.2 错误汇总验证控件
可设置验证控件的 Text 属性为“*”,在验证提示时,验证控件的提示位置仅显示一个红色的“*”。另一种方式是在验证控件的标签中写入“*”
示例:
<asp:RequiredFieldVlidator ID="rfvUserName" runat="server" ErrorMessage=" 请输入用户名 " ControlToValidate="txtLoginId"> * </asp:RequiredFieldVlidator>
总结 :
- RequiredFieldValidator控件确保用户输入数据,即提供非空验证。该控件是最简单且常用的验证控件,常和其他验证控件一起实现有效性验证
- CompareValidator控件用于验证用户输入的内容是否符合条件要求
- RangeValidator控件用于范围检查。比如验证用户输入的年龄,要求输入0-100岁之间的正整数
- ReqularExpressionValidator是正则表达式的意思,正则表达式就是用某种模式去匹配一类字符串的一个特殊公式
- CustomValidator控件用于自定义验证
- ValidationSummary可用于汇总所有的错误报告