ASP.NET初学笔记:验证控件

来源:互联网 发布:charls数据 编辑:程序博客网 时间:2024/06/07 04:51

1.  验证控件概要

  • asp.net包含6个验证控件:RequiredFieldValidator,RangeValidator,CompareValidator,RegularExpressionValidator,CustomValidator和ValidationSummary。
  • 验证控件会在客户端(浏览器)和服务器都默认执行验证。验证控件使用客户端JavaScript。如果浏览器不支持(或禁用了)JavaScript,那么在显示验证错误之前,表单必须要回传到服务器端。出于安全考虑,就算在客户端进行了验证,在服务器端仍然要执行验证。
  • 当使用验证控件时,在对提交页面的数据做任何事情之前,都应总是检查Page.IsValid属性。
  • 默认情况下,验证控件的Display属性值是Static,这时生成的验证信息如下:
    <span id=" " style="color:Red;visibility:hidden;">(Required)</span>
    注意,错误信息呈现在一个<span>标签中,包含一个CSS属性,设置<span>标签的visibility为hidden。
    如果Display属性的值为Dynamic,错误信息则如下:
    <span id=" " style="color:Red;display:none;">(Required)</span>
    visibility和display属性都能用于隐藏文本。但是,visibility隐藏文本仍然会占用屏幕空间,用display隐藏文本则不会占用屏幕空间。
    通常情况下,应当将Display属性设为Dynamic。这样,在验证控件后面的控件的内容就不会被推到右边。
    若不想用单个验证控件来显示错误信息,则可以把Display属性设为None,而用ValidationSummary控件来显示错误信息。
  • 突出显示验证错误的三种方法:
    第一种方法是向验证控件的Text属性添加HTML字符串,比如添加一个<img>标签:
    <asp:RequiredFieldValidator id="" ControlToValidate="" Text="<img scr='图片URL' alt='当鼠标停在图片上时要显示的相关信息' />"
    第二种方法是使用SetFocusOnError属性,所有验证控件都支持这个属性,如果它的值为true,当存在验证错误时,表单的焦点会自动地转移到验证控件所关联的控件上。
    第三种方法是利用Page.Validators属性。该属性公开验证控件集合。以下代码演示其用法。
    示例代码清单1: Page.Validators属性用在Page_PreRender()处理程序中。上面代码,Page.Validators集合中的每个控件的IsValid属性都被检查。
  • 使用验证组。
    假设要创建一个同时包含多个表单的页面,多个表单都包含验证控件,那么提交任一表单时所有表单的验证控件都会进行评估。使用验证组可以解决这个问题。下面示例代码清单2中的页面同时包含登录和注册表单,每个表单都有互不相干的一套验证控件。
    示例代码清单2: 效果:

    注意验证控件和按钮控件都包含ValidationGroup属性。可以给ValidationGroup赋任意字符串值,该字符串唯一的目的就是把表单单中不同的控件关联到一起并划分到不同的组。
  • 禁用验证
    所有的按钮控件都有CauseValidation属性,如果赋值为false,那么点击该属性就会绕过页面中所有的验证。绕过验证对创建取消按钮很有用。下面示例代码清单3中的页面有一个取消按钮,用于从当前页面重定向到Default.aspx页面。
    示例代码清单3: 取消按钮带有一个值为False的CausesValidation属性。假如不带这个属性,当点击取消按钮时RequireFieldValidator控件会阻止你提交表单。

2.  RequiredFieldValidator控件

  • 可以使用该控件的InitialValue属性来指定空字符串之外的默认值。例如示例代码清单4用该控件来验证DropDownList控件。
    示例代码清单4: 注意InitialValue属性,如果没有选择颜色就提交表单的话,则会显示验证错误。

3.  RangeValidator控件

  • 该控件必须设置五个属性:ControlToValidate,Text,MinimumValue,MaxmumValue和Type。
    示例代码清单5: 使用RangeValidator控件时不要忘记设置Type属性。Type属性的默认值为String。

4.  CompareValidator控件

  • 该控件可用于三种不同类型的验证任务:数据类型检查、和一个固定值进行比较、比较两个表单字段的值。下面分别用示例说明。
    数据类型检查。
    示例代码清单6: 和一个固定值进行比较。
    示例代码清单7: 比较两个表单字段的值。
    示例代码清单8: 上面代码如果输入第一个字段的值大于第二个字段的值就会显示验证错误。

5.  RegularExpressionValidator控件。

  • 该控件用于把表单字段的值和正则表达式进行比较。
    示例代码清单9:

6.  CustomValidator控件。

  • 可以为CustomValidator控件关联一个验证函数。通过处理ServerValidate事件来将自定义验证函数和CustomValidator控件相关联。ServerValidate是服务器端函数,因此页面传回服务端后才会引发验证。如果要在客户端执行验证就需要客户端函数。下面代码清单10中演示如何把服务器端函数、客户端函数和CustomValidator控件关联起来,它在客户端和服务端都进行检查。
    示例代码清单10:
  • 与其它验证控件不同的是,就算表单字段为空也可以进行验证。CustomValidator控件有一个ValidateEmptyText属性,这个属性使CustomValidator控件即使没有用户输入值也验证表达字段,如果没有这个属性,不输入任何数据就提交表单,也不会显示验证错误信息。下面代码清单包含一个TextBox,要求输入严格限制为4个字符的字符串。
    示例代码清单11:
  • 不同于其它验证控件,不一定要把CustomValidator控件和表单字段关联,换句话说,ControlToValidator属性不是必需的.下面代码页面含有一个定时测试,如果五分钟内没有回答,CustomValidator就会显示一个验证错误信息。
    示例代码清单12:

7.  ValidationSummary控件。

  • ErrorMessage属性和Text属性不同之处在于,赋值给ErrorMessage属性的信息显示在ValidationSummary控件中,而赋值给Text属性的信息显示在页面主体中。通常保持Text属性的错误信息简短,赋值给ErrorMessage属性的错误信息应该能识别有错误的表单字段,换句话说通过ErrorMessage的错误信息可以知道发生错误的表单控件。
    以下代码页面,如果不填名和姓就提交表单,错误信息会同时显示在页面主体和ValidationSummary控件中。
    示例代码清单13:
  • ValidationSummary控件的属性ShowMessageBox用于显示一个弹出警告对话框,ShowSummary属性用于隐藏页面中的验证摘要(值为false)。如果把前者设为True,后者设为False,则验证摘要只显示在弹出的警告对话框中,如下代码页面在警告对话框中显示验证摘要。注意,RequireFieldValidator控件的Display属性的值也设成了None。
    示例代码清单14:

8.  创建自定义验证控件。

  • 通过从BaseValidator类派生一个新的控件来创建新的验证控件。BaseValidator类是所有验证控件的基类,它是一个抽象类,要求了类必须实现下面这个方法:EvaluateIsValid(当被检验的表单字段通过验证时返回True)。BaseValidator类也包含一些可重写的其他方法,最有用的是GetControlValidatorValue(用于获取被验证的控件的值)。创建自定义验证控件时,要重写EvaluateIsValid()方法,并在该方法中调用GetControlValidationValue来获得被验证的表单字段值。
  • 下面演示创建一个简单的、用于验证表单长度的自定验证控件。下面是过程。
    将代码清单15这个类文件命名为LengthValidator.cs,并添加到App_Code文件夹中。
    示例代码清单15: 在下面的代码清单16中使用LengthValidator控件来验证输内容符的长度。
    示例代码清单16: 注意在页面顶部,用<@ Register @>指令注册了LengthValidator控件。如果需要在应用程序的多个页面中使用这个控件,可以在Web配置文件的<Pages>节中注册控件。
原创粉丝点击