ASP.NET大大提升表单检查过程

ZDNet软件频道 时间:2002-04-27 作者:BUILDER.COM |  我要评论()
本文关键词:ASPDOTNET VSDOTNET
本文主要介绍和演示ASP.NET随带的检查服务器控件。
Web编程的一个基本任务就是对用户输入到表单中的值进行检查。传统的ASP编程在这一方面并没有提供太大的支持,而是把相应的检查工作留给程序开发人员来设计和编写自己的表单检查机制。

幸运的是,ASP.NET对表单检查进行了相当大的改进。对初学者来说,以事件为基础的、以UI控件为中心的WebForm编程模式大大简化了表单检查的任务。不过,ASP.NET在原有基础之上更进一步,通过一整套服务器控件直接支持表单检查,从而几乎完全消除了自己建立表单检查机制的必要。本文的主旨即是介绍和演示ASP.NET随带的检查服务器控件。

检验控件层次

ASP.NET检验服务器控件(validation server control)同TextBoxLabel等Web服务器控件一道位于System.Web.UI.WebControls名称空间之下。ASP.NET提供了6种检验控件,如图A所示:

图A

ASP.NET检验控件

ValidationSummary控件并不执行具体的表单值检验工作。它的功能是总结页面内其他检验控件发出的错误消息。在本文的其他部分,当我提到检验控件的时候,我指的是那些执行具体检验任何的控件,也就是除了ValidationSummary之外的其他控件。

检验控件直接或者间接派生自抽象的BaseValidater类,该类又是从Label控件派生的。你可能会觉得奇怪,检验控件怎么会从Label派生呢?很快我们就会知道原因何在了。

检验

检验控件对页面上输入服务器控件的值进行检查,从而判断出这些值是否符合特定的条件。被检查的输入控件由检验控件的ControlToValidate属性设定。你可以对检验控件编程令其调用Validate方法对数据控件的输入值进行检查,如果检验结果符合条件则该方法会把检验控件的IsValid属性设置为true,否则设置为false。你可以设置页面上的检验控件调用Page.Validate方法对所有输入控件的输入值进行检查。

Page.IsValid属性在页面内所有检验控件的检查都成功的情况下设置为true否则设置为false。假如按下了某个按钮控件,而且该控件的CausesValidation属性设置为true,那么Page.Validate方法即被调用。Reset或者clear按钮的CausesValidation属性默认设置为 false。假如页面上任何检验空间的IsValid设置为false那么按钮单击事件即被屏蔽。

如果浏览器支持ECMAScript 1.2 (JScript) 和Document Object Model (DOM) (兼容Internet Explorer 4及以后版本),那么检验控件会执行客户端脚本在客户机上进行表单检查工作而不会通过服务器进行迂回检查。这样做可以给用户提供给及时的反馈。为了对浏览器提供强度更大的支持和防止用户旁路表单检查,当页面提交之后服务器端也会执行表单检查。客户端检查可以禁用,方法是把检验控件的EnableClientScript属性设置为false。你还可以禁用页面内所有检验控件的客户端表单检查,只需要在@Page指示符内设置属性ClientTarget=”downlevel”即可。

在检查不通过的情况下,检验控件的Text属性会在页面内检验控件所在的位置显示出来,其外观形式就如同一个标签。假如没有设置Text属性则显示ErrorMessage属性。一旦检验不通过,ErrorMessage属性也会显示在ValidationSummary控件内。假如检验控件没有设置ErrorMessageValidationSummary上什么都不会显示。一般原则是摘要消息或者错误提示可以采取设置Text属性的方式,而较长的说明则采取设置ErrorMessage属性的方式。

不同的检验控件测试的条件是不同的:

  • RequiredFieldValidator—如果输入控件中已经输入了值则检验成功。
  • RangeValidator—如果输入控件的值处于MaximumValueMinimumValue属性限定的范围之内则检验成功。Type属性设置MaximumValue MinimumValue的数据类型,而输入控件内的值则在执行范围比较之前进行转换。
  • RegularExpressionValidator—如果输入控件内的值匹配ValidationExpression属性设置的正则表达式则检验成功。
  • CompareValidator—该控件通过其Operator属性执行多种类型的检查。DataTypeCheck运算符只检查输入控件内的值是否可以转换为Type属性设置的数据类型。关系运算符,比如Equal或者GreaterThan把输入控件内的值同某静态值(由ValueToCompare属性设置)或者其他控件的值(由ControlToCompare属性设置)进行比较。
  • CustomValidator—该控件可以让你通过对CustomValidator.ServerValidate事件的处理执行自己的唯一性检查。在调用CustomValidator.Validate时会触发该事件。事件处理器可以检查你希望得到的结果并把ServerValidateEventArgs事件参数的IsValid属性设置为检验控件的状态。ServerValidate事件处理器可以通过OnServerValidate属性设置。通过ClientValidationFunction属性设置客户端脚本函数即可启用客户端检验。

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134