过去在开发ASPWeb应用程序时,验证用户输入的信息是否有效虽然技术难度不是很高,但是非常繁琐。在ASP.NET中,这种现象不再存在,因为有了数据验证控件。
验证服务器控件是一个控件集合,这些控件允许验证关联的输入服务器控件(例如TextBox),并在验证失败时显示自定义消息,每个验证控件执行特定类型的验证。由于在验证控件中显示错误信息,可通过将验证控件放置在所需位置来控制在Web页中显示消息的位置,还可以显示页上所有验证控件的结果摘要。
数据验证控件共有以下6种:
◆ RequiredFieldValidator:确保用户在Web窗体页上输入数据时不会跳过必填字段。
◆ CompareValidator:将用户的输入与常数值、另一个控件的属性值或数据库值进行比较。
◆ RangeValidator:确保用户输入的值在指定的上下限范围之内。
◆ RegularExpressionValidator:确保用户输入信息匹配正则表达式定义的模式。
◆ CustomValidator:确保用户输入的内容符合您自己创建的验证逻辑。
◆ ValidationSummary:提供一个集中显示验证错误信息的地方。
其中,常用的为前5种控件,最后一个主要用于集中显示信息。默认情况下,当单击按钮控件时,即执行页验证。将按钮控件的CausesValidation属性设置为false可以阻止在单击按钮控件时执行验证。“取消”或“清除”按钮的该属性通常设置为false,以防止在单击按钮时执行验证。
此外,很多初学者在使用验证控件时不为验证控件设置ID属性,而使其ID属性为默认值,这不是一个好习惯,不便于代码的维护。建议初学者一定要为每个控件指定具备一定实际意义的ID属性。
下面通过实例演示验证控件的用法。该实例模拟一个用户注册的功能,要求用户必须输入姓名和密码信息,密码必须输入两次且两次输入的密码必须匹配。另外用户可以选择性地输入邮箱,如果用户输入了邮箱信息,则验证控件检查邮箱是否合法,如果不输入,则不进行检查。若输入完整、正确时,转向另一网页,若输入错误时,除分别显示以外,还需要汇总显示错误。假定密码为111111。
本例的操作步骤如下:
(1)启动Dreamweaver,新建一个名为DataValidator.aspx的ASP.NETVB网页。
(2)在页面中插入一个表单,然后单击“常用”插入面板上的“标签选择器”按钮,在弹出的“标签选择器”对话框左侧单击“ASP.NET标签”/“Web服务器控件”,在页面上插入6个Label控件,4个TextBox控件和1个按钮控件,并按照表4-11设置控件属性。
表4-11 控件属性
(3)单击图标打开“标签选择器”对话框,在左侧单击“ASP.NET标签”/“验证服务器控件”,然后选择添加三个RequiredFieldValidator控件、两个Compare Validator控件和一个RegularExpressionValidator控件,将其前景色均设置为红色,属性设置见表4-12。并按图4-3调整控件位置。
由于用户姓名和密码必须填写,所以分别为txtName和txtPsw控件添加了RequiredFieldValidator控件,以避免用户不填写数据而直接提交。同时,为了保证两次输入的密码匹配,还为txtPswCheck控件添加了CompareValidator控件,并指定该CompareValidator控件的“要验证的控件”为txtPsw,表示txtPswCheck的数据必须和txtPsw中输入的数据相同。为了保证用户输入的邮箱地址合法,使用了RegularExpressionValidator。
表4-12 验证控件属性
图4-3 调整控件位置
另外设置cForPsw控件的“要比较的值”为111111,操作为“等于”;设置rForMail的验证表达式为:“[a-zA-Z0-9]+@[.a-z0-9]+”。
(4)选择“提交”按钮,单击右键,选择“编辑标签”命令,在弹出的对话框中单击“OnClick”事件,在右侧的文本框中输入“btnOK_Click”,然后单击“确定”按钮。
(5)切换到代码视图,在HTML头部注册按钮单击事件,编写如下代码:
每个页面都有Page.IsValid属性,没有输入数据时,Page.IsValid为false,有数据输入时为true。因此在按钮单击事件中首先要判断验证控件是否通过了验证。(www.daowen.com)
(6)保存页面,按F12键在浏览器中预览页面效果,如图4-4。
(7)输入部分信息后单击“提交”按钮,测试验证控件,如图4-5所示。输入符合规则的信息以后再单击“提交”按钮,得到如图4-6所示界面。
图4-4 Data Validator.aspx初始界面
图4-5 测试验证控件界面
图4-6 信息合法界面
如果需要限定输入值的范围,可以使用RangeValidator控件检查用户输入的数字、字母或日期是否在指定的上限与下限之间。边界表示为常数,例如,下面的代码使用RangeValidator控件验证在文本框中输入的值是否介于1和10之间。
此外还可以自定义验证逻辑,使用CustomValidator控件计算输入控件的值以确定它是否通过验证。该控件主要属性有ClientValidationFunction:指定与CustomValidator控件相关联的客户端验证脚本函数的名称。
例如,下面的代码使用CustomValidation控件在客户端上验证在文本框中输入的值是否为偶数:
其相应的脚本如下:
前面提到过可以使用ValidationSummary控件在单个位置概述Web页上所有验证控件的错误信息。该控件的主要属性如下:
● DisplayMode:基于DisplayMode属性的值,该摘要可显示为列表、项目符号列表或单个段落。
● ErrorMessage:ValidationSummary控件中为页面上每个验证控件显示的错误信息,是由每个验证控件的ErrorMessage属性指定的。如果没有设置验证控件的ErrorMessage属性,则在ValidationSummary控件中不显示该验证控件错误信息。
● HeaderText:在ValidationSummary控件的标题部分指定一个自定义标题。
● ShowSummary:控制是否显示ValidationSummary控件。
● ShowMessageBox:该属性设置为true时,可以在消息框中显示摘要。
继续采用本小节的第一个例子,使用ValidationSummary控件来显示所有未通过验证的输入控件。在代码中添加如下代码:
预览修改后的页面,并输入验证数据,此时的页面效果如图4-7所示:
图4-7 页面效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。