a
ASP.NET功能强大的一种体现就是具有丰富的Web控件,这里我们谈谈其中的一种—验证控件
。它总结了各种Web数据校验方式,设计成了今天这种通用的ASP.NET控件形式。
ASP.NET公有六种验证控件,分别如下:
控件名 功能描叙
RequiredFieldValidator(必须字段验证) 用于检查是否有输入值
CompareValidator(比较验证) 按设定比较两个输入
RangeValidator(范围验证) 输入是否在指定范围
RegularExpressionValidator(正则表达式验证) 正则表达式验证控件
CustomValidator(自定义验证) 自定义验证控件
ValidationSummary(验证总结) 总结验证结果
--------------------------------------------------------------------------------
目录
1. 验证控件简介
2. 验证控件的使用方法
3. 小结
--------------------------------------------------------------------------------
1. 验证控件简介
顾名思义,验证控件就是校验用户输入数据正确性的控件,如用户在文本框中输入数据后,
便显示一条提示信息,表明了校验的数据是不合法的。验证过程既可以在服务器上执行,也
可以在客户机上执行,在客户端运行的校验代码是数据提交之前被执行的,因此可以提高程
序的性能。ASP.NET的验证控件可以进行多种校验,如数据范围检查、数据间的比较和自定义
校验等等,下面的内容将会逐一介绍这些验证控件。
--------------------------------------------------------------------------------
2. 验证控件的使用方法
① RequiredFieldValidator控件
当页面上的控件要求必须输入数据时,RequiredFieldValidator就起作用了,
ControlToValidate属性选择需要验证的控件,而ErrorMessage属性则是校验不合法后显示的
错误提示信息。
RequiredFieldValidator Example
在以上标准代码中:
ControlToValidate:表示要进行检查控件ID;
ErrorMessage:表示当检查不合法时,出现的错误信息;
Display:错误信息的显示方式;Static表示控件的错误信息在页面中占有肯定位置;
Dymatic表示控件错误信息出现时才占用页面控件;None表示错误出现时不显示,但是可以在
ValidatorSummary中显示;
占位符:表示Display为Static时,错误信息占有"占位符"那么大的页面空间
②CompareValidator控件
CompareValidator控件是用来比较两个输入控件之间的数据一致性的,同时也可以用来校验
控件中内容的数据类型:如整形、字符串型等。ControlToCompare和ControlToValidate属性
用来设置进行比较的两个控件。
CompareValidator Example
比较控件比较两个控件的输入是否符合程序设定,大家不要把比较仅仅理解为"相等",尽管
相等是用的最多的,其实,这里的比较包括范围很广,大家看标准代码就会明白。
比较控件的标准代码如下:
在以上标准代码中:
Type表示要比较的控件的数据类型;
Operator表示比较操作(也就是刚才说的为什么比较不仅仅是"相等"的原因),这里,
比较有7种方式;
其他属性和RequiredFieldValidator相同;
在这里,要注意ControlToValidate和ControlToCompare的区别,如果operate为
GreateThan,那么,必须ControlToCompare大于ControlToValidate才是合法的,这下,应该
明白它们两者的意义了吧?例子程序请参考RequiredFieldValidator控件,对照标准代码自
己设计。
③RangeValidator控件
RangeValidator控件可以用来判断用户输入的值是否在某一特定范围内,属性MaximumValue
和MinimumValue用来设定范围的最大和最小值。
RangeValidator Example
用MinimumValue和MaximumValue来界定控件输入值得范围,用type来定义控件输入值的类型
。
④RegularExpressionValidator控件
RegularExpressionValidator控件可以判断用户输入的表达式是否正确,如电话号码、邮编
、URL等,ControlToValidate属性选择需要验证的控件,ValidationExpression属性则编写
需要验证的表达式的样式,下面的例子就是一段校验邮编的代码。
RegularExpressionValidator Example
在以上标准代码中,ValidationExpression是重点,现在来看看它的构造:
在ValidationExpression中,不同的字符表示不同的含义:
"."表示任意字符;
"*"表示和其他表达式一起,表示容易组合;
"[A-Z]"表示任意大写字母;
"d"表示容易一个数字;
注意,在以上表达式中,引号不包括在内;
举例:
正则表达式:".*[A-Z]"表示数字开头的任意字符组合其后接一个大写字母
⑤CustomValidator控件
CustomValidator控件用于执行用户自定义的验证,这种校验既可以是服务器端的也可以是客
户端的,下面的代码就是使用客户端验证邮编的例子。
CustomValidator Example
⑥ValidationSummary控件
这个控件会将页面中所有的校验错误输出为一个列表,列表的显示方式由DisplayMode属性设
置。
ValidationSummary Example
综合上面的讲述来看一个控件实例
using system;
2 using system.collections.generic;
3 using system.linq;
4 using system.web;
5 using system.drawing;
6 using system.drawing.imaging;
7 using system.web.sessionstate;
8 namespace webapp
9 {
10 ///
11 /// 验证码实例 的摘要说明
12 ///
13 public class 验证码实例 : ihttphandler, irequiressessionstate //在一般处理程序中使用session要实现该接口,在system.web.sessionstate中;
14 {
15 public void processrequest(httpcontext context)
16 {
17 context.response.contenttype = "image/jpeg"; //返回jpg类型;
18 using (bitmap bitmap = new bitmap(140, 80)) //像素大小;
19 {
20 using (graphics g = graphics.fromimage(bitmap)) //生成一个画板
21 {
22 random rand = new random();
23 int code = rand.next(1000, 999999); //制定随机函数,用于限定字随机字符串大小;
24 string strcode = code.tostring();
25 httpcontext.current.session["code"] = strcode; //在一般处理程序中使用session接口;
26 g.clear(color.yellowgreen); //指定背景颜色;
27 g.drawstring(strcode, new font("微输雅黑", 20), brushes.white, new pointf(15,25)); //画的图片相关参数,(字体,大小),颜色,位置;
28 bitmap.save(context.response.outputstream, imageformat.jpeg); //输出到流中并保存为jpg格式;
29 }
30 }
31 }