一、 验证控件的引入 :
在开发Web应用程序时,经常遇到验证问题,以检验用户输入数据是否正确或是否输入数据。这部分工作量非常大,不但加重了程序员的负担,而且使程序代码可读性变差,给以后的维护工作增加了难度。现在,Asp.net为我们提供了验证控件,不但简化了验证工作,而且提供了极大的灵活性。
二、原理:
当用户输入的数据被处理时(如提交网页),ASP.NET把用户数据传送给相应的验证控件,验证控件按照其验证规则检验用户数据,并更具验证是否通过设置其IsValid属性。如果验证通过,则置IsValid属性为true;如果验证未通过,则置IsValid属性为false。如果Web页有多个验证控件,则调用所有验证控件进行验证。如果有任何一个验证没有通过,则整个网页被设置为无效,即Page类的IsValid属性被设置为False。这样我们就可以通过检验Page类的IsValid属性获知验证是否通过,从而在程序中采取相应的对策。
三、验证控件:
主要介绍五大验证控件
RequiredFieldValidator 控件 : 验证控件是否为空
RegularExpressionValidator 控件 :控件检查输入的内容与正则表达式所定义的模式是否匹
CompareValidator控件:控件将用户输入与一个常数值或者另一个控件或特定数据类型的值进行比较
RangeValidator 控件 :控件检查用户输入的内容是否在指定的上下限范围内
CustomValidator 控:控件使用您自己编写的验证逻辑来检查用户输入的内容。
1)控件的共性:
ControlToValidate:指定要验证的控件
ErrorMessage:验证提示信息。
Display:Static一创建就占有固定位置;Dynamic:不起作用时,不占用控件,提示信息才显示。一般用Static
2)控件的特性:
1、CompareValidator:公共属性 Operator; Type
1)固定值比较:ValueToCompare(值)
2)类型检验:
3)控件比较:CompareToCompare
2、RangeValidator:
MaximumValue:最大值;
MinimumValue:最小值
Type:类型
3、RegularExpressionValidator
ValidationExpression:正则表达式。
4、CustomValidator
事件:ServerValidate ,编写控件的用途,通过控件的IsValid属性来判断是否通过验证。
补充:
1)信息显示ValidationSummary控件:件不执行验证,但经常与其他验证控件结合使用,共同显示来自网页上所有验证控件的错误消息
2)Page的Isvalid属性:IsValid=True,向服务器提交信息;IsValid=false,只要有一个未通过验证,无法提交服务器。
四、实例遇到的一些问题
北大青鸟中有这样一个例子:
当我具体实现的时候遇到了两个问题,下面就一一介绍这两个错误。
1、当程序开始运行的时候,出现下面的页面:
解决方法:
protected void Page_Load(object sender,EventArgs e)
{
UnobtrusiveValidationMode =UnobtrusiveValidationMode.None;
}
一切OK!
关于这个问题就不多说,推荐链接:
http://www.cnblogs.com/luckly-hf/p/3312628.html
2、第一个问题解决之后,接着冒出第二个问题:
当验证通过时,显示“提交”正确结果;但是当出现验证不通过的,仍然显示“提交”错误结果。
解决方案一:
把每一个验证控件的EnableClientScript=false,表示禁用客户端验证;结果正确。显示如下
解决方案二、
在页面属性重设置:ClientTarget="DownLevel",不管高低版本浏览器都会提交到服务器端验证;默认客户端验证;此方法较简单,只需要在页面中设置页面属性即可。
五、小结
1)验证控件都是大同小异的;只要善于联想,善于打包,一切将会变得简单。
2)通过做这个例子,特别值得一提的是:心态端正了很多(不抛弃不放弃)。