概述
validation 控件主要是为了验证用户输入内容的。而用户容易犯的错误是:
1、忽略重要的内容,让文本框空着
2、为了应付,瞎填,乱填就想提交
3、用户想认真填写,但是填写的内容不符合格式要求。
4、别用用心之人,会尝试输入一些不安全的代码。
.net2.0提供了5种validation 控件来解决以上问题:
1、RequiredFieldValidator 验证输入内容是否为空。
2、RangeValidator 验证输入内容是否为特定范围内的的数值,字母或日期
3、CompareValidator 验证当期输入框内的内容是否和另外一个输入控件内容相匹配
4、RegularExpressionValidator 验证输入内容是否满足特定的正则表达式规则
5、CustomValidator 调用编程者自己定义的验证程序
任何一个控件都可以绑定到一个输入控件上,一个输入控件可以同时跟几个验证控件绑定。
需要注意的是:当你在使用控件RangeValidator,CompareValidator或RegularExpressionValidator的时候,验证过程都会将输入内容为空看做是正确的,并通过验证。如果你不想这样,只能加一个RequiredFieldValidator控件,保证输入内容不是空的。
和其他web控件一样,你添加一个验证控件到表单中的时候也用
<asp:ControlClassName />
顺便提一下,还有个验证控件:ValidationSummary 它不是真正去验证什么,而是通过它可以提供一个列表来列出整个页面的所有验证错误信息。
工作过程
当用户填好表单后就单击按钮进行提交。而每个按钮都有个属性:CauseValidation ,它的值可以是true或false.
当按钮的CauseValidation属性的值是false的时候,用户单击按钮后不会进行任何验证,数据直接提交到服务器。
当然了,当CauseValidation的属性值为true的时候(默认值),用户单击这个按钮asp.net会自动地去验证这个页面的所有验证控件。当任何一个验证控件验证的结果出现没有通过验证的状况时,asp.net会阻止提交后的处理程序,并显示出错误信息。
客户端的验证
在许多最新的浏览器中(包括IE5.0及以后的版本,Firefox),asp.net会自动在客户端页面中插入javascript代码去验证,在进行数据提交之前就会进行验证,并提示错误信息。
不过,即使在客户端验证都通过的情况下,在服务端仍然进行验证过程。这是为了提防某些人将客户端页面进行修改,删除验证javascript代码后进行提交。
Validator 类
validation 控件属于 System.Web.UI.WebControls 命名空间(namespace)继承于 BaseValidator 类。
BaseValidator 的属性如下:
ControlToValidate 指定该控件所要验证的输入控件id
ErroMessage 验证没有通过的时候,显示的错误信息
ForeColor 错误信息的显示颜色
Display 错误信息的显示方式,其值有三个:Dynamic 或 Static,None 中文意思为动态和静态, 所谓动态就是隐藏的错误信息并不占位,当发生验证失败的时候会出现错误信息。而静态的,就是错误信息在没有显示的时候也占位,只是显示与不显示进行转换而已。两者的区别就是错误信息在显示前占位与否。None,表示无论是否通过了验证与否,都不显示错误信息。
IsValid 只读,其值为true或false反映该控件是否成功通过验证。
Enabled 当值为false的时候,该验证控件不起作用,默认为true.
EnableClientSideScript 当设置为true,asp.net会自动在客户端插入相应的javascript和DHTML代码进行客户端的验证,前提是客户端浏览器要支持。
当使用一个验证控件的时候,你只需要对ControlToValidate 和ErroMessage属性进行相关设置即可。当然对五种不同的验证控件,你需要注意它们需要一些不同额外的设置:
RequiredFieldValidator 不需要
RangeValidator MaximumValue,MinimumValue,Type
CompareValidator ControlToCompare,Operator,Type,ValueToCompare
RegularExpressionValidator ValidationExpression
CustomValidator ClientValidationFunction,ServerValidateEvent
由于各验证控件会产生错误信息,错误信息需要占位,当我们在排版的时候没有那么多的地方 放错误信息的时候,我们又需要怎么做呢?
幸好有个控件ValidationSummary可以解决这个问题:
将<asp:ValidationSummary id="Errors" runat="server" /> 放在适当的位置,当验证的时候,它将所有的错误信息依次做列表显示。
ValidationSummary也拥有很多属性:
HeaderText 可以理解为标题文本,比如设置为“本次产生如下错误:”
ForeColor 文本的颜色
DisplayMode &n