【ASP.NET】基础补习之验证控件

在做Web应用程序的时候,因为用户有可能输入各式各样的信息,经常需要大量的数据验证,如果交给服务器去验证的话,无疑会增加服务器的压力,而且也容易造成程序的异常。甚至导致网站出现一些安全问题。因此我们在将这些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行。

ASP.NET提供了六种验证控件,可以实现以上功能。

  • RequiredFieldValidator(必须字段验证)
  • CompareValidator(比较验证)
  • RangeValidator(范围验证)
  • RegularExpressionValidator(正则表达式验证)
  • CustomValidator(自定义验证)
  • ValidationSummary(验证总结)

 

验证控件基本成员:

  • ControlToValidate – 要进行验证控件ID
  • ErrorMessage – 验证失败时,出现的错误信息
  • IsValid – 返回布尔值判断控件是否有效
  • Validate – 验证控件的方法,同时改变IsValid属性
  • Display– 错误信息的显示方式
    • None (控件的错误信息在页面中占有肯定位置)
    • Static (控件的错误信息出现时才占用页面控件.)
    • Dynamic (错误出现时不显示.)

 The RequiredFieldValidation Control

用于检查是否有输入值。用法如下:

       Required field: <asp:textbox id="textbox1" runat="server"/>
<asp:RequiredFieldValidator id="valRequired" runat="server" ControlToValidate="textbox1"
    ErrorMessage="* You must enter a value into textbox1" Display="dynamic">*
</asp:RequiredFieldValidator>

以上例子,实现当用户在textbox1中输入数据后,提交才会有效,否则激活验证控件显示错误信息。

 

The CompareValidator Control

按设定比较两个输入。CompareValidator可以用来验证注册时对密码的确认等。法如下:

Textbox 1: <asp:textbox id="textbox2" runat="server"/><br />
Textbox 2: <asp:textbox id="textbox3" runat="server"/><br />
<asp:CompareValidator id="valCompare" runat="server"
    ControlToValidate="textbox1" ControlToCompare="textbox2"
    Operator="Equals"
    ErrorMessage="* You must enter the same values into textbox 1 and textbox 2"
    Display="dynamic">*
</asp:CompareValidator>

上面例子验证textbox1和textbox2必须一致,两个控件根据Operator属性进行比较。Operator属性可以设定为Equal, GreterThan, LessThanOrEqual等。CompareValidator的另一个用法是和一个固定值比较:

Field: <asp:textbox id="textbox4" runat="server"/>
<asp:CompareValidator id="CompareValidator1" runat="server" ControlToValidate="textbox1"
    ValueToCompare="50"
    Type="Integer"
    Operator="GreaterThan"
    ErrorMessage="* You must enter the a number greater than 50" Display="dynamic">*
</asp:CompareValidator>

数据类型可以是Currency, Double, Date, Integer , String。String是默认属性。

The RangeValidator Control

验证输入是否在指定的范围。有三个必要的属性MaximumValue, MinimumValue, 和Type.

Enter a date from 1998:
<asp:textbox id="textbox5" runat="server"/>
<asp:RangeValidator id="valRange" runat="server"
    ControlToValidate="textbox1"
    MaximumValue="12/31/1998"
    MinimumValue="1/1/1998"
    Type="Date"
    ErrorMessage="* The date must be between 1/1/1998 and 12/13/1998" Display="static">*</asp:RangeValidator>

The RegularExpressionValidator Control

根据正则表达式验证。利用正则表达式可以灵活的对控件进行验证。正则表达式是一个优秀程序员必须掌握的技能之一。有关正则表的式的学习请参考
http://www.regexlab.com/zh/regref.htm

下面是一个简单的验证邮箱地址格式的例子:

E-mail: <asp:textbox id="textbox6" runat="server"/>
<asp:RegularExpressionValidator id="valRegEx" runat="server"
    ControlToValidate="textbox1"
    ValidationExpression=".*@.*\..*"
    ErrorMessage="* Your entry is not a valid e-mail address."
    display="dynamic">*
</asp:RegularExpressionValidator> 

The CustomValidator Control

自定义验证控件,该控件用自定义的函数界定验证方式。ClientValidationFunction指定一个包含在html中的客户端验证函数。OnServerValidate是服务器端验证函数。

Field: <asp:textbox id="textbox7" runat="server">
<asp:CustomValidator id="valCustom" runat="server"
    ControlToValidate="textbox1"
    ClientValidationFunction="ClientValidate"
    OnServerValidate="ServerValidate"
    ErrorMessage="*This box is not valid" dispaly="dynamic">*
</asp:CustomValidator>

<script language="Javascript">
<!--
    /* ... Code goes here ... */
-->
</script>

服务器验证函数

Sub ServerValidate (objSource As Object, objArgs As ServerValidateEventsArgs)
    ' Code goes here
End Sub

Validation Summary

总结验证结果。显示 Web 页上所有验证错误的列表。她的用法如下:

<asp:ValidationSummary id="valSummary" runat="server"
    HeaderText="Errors:"
    ShowSummary="true" DisplayMode="List" />

validation summary控件收集本页的所有验证错误信息,并可以将它们组织以后再显示出来。

(ShowMessageBox="True")

相关源码