ASP.NET程序设计教程第6章Web表单验证第5章HTML控件和Web服务器控件2内容验证是用户在Web表单中输入是否有效的重要任务之一。因为在网上提供信息时,用户的行为是无法预测的,因此必须采取额外的预防措施,尽量保证用户提供的数据是正确的。例如,信用卡号和身份证号的输入的有效和无效的问题。在ASP.NET中,这些有效性验证很容易实现。本章将介绍ASP.NET中的有效性验证控件和各种验证用户输入有效性的方法。第5章HTML控件和Web服务器控件3先从一个例子谈起验证用户账号的例子:EX61.ASPX使用了RegularExpressionValidator验证控件。第5章HTML控件和Web服务器控件46.1Web表单验证简介对于开发人员来说,验证用户在ASP.NET表单中输入是否有效是重要的任务之一。在提供信息时,用户的行为是无法预测的,因此必须采取额外的预防措施,确保用户提供的数据是正确的。例如,信用卡号和身份证卡号的输入的有效和无效的问题。在ASP.NET中,这些有效性验证很容易实现。本章将介绍ASP.NET中各种验证用户输入有效性的方法,介绍一些有效性验证控件。第5章HTML控件和Web服务器控件56.1.1使用验证控件当我们我要求使用者输入数据的时候,一定要执行数据验证的工作。数据验证是一种限制使用者输入的限制,可以确定使用者所输入的数据是正确的,或是强迫使用者一定要输入数据。先执行数据验证比输入错误的数据后,再让数据库响应一个错误讯息效率高;还可以确保使用者所输入的数据是一个有效值,而不会造成垃圾数据。数据验证Web控件可以帮助我们少写许多程序来验证使用者输入的数据,下表列出ASP.NET所提供的数据验证Web控件第5章HTML控件和Web服务器控件66.1.2验证控件的类型控件名称说明RequiredFieldValidator验证使用者是否有输入数据。RegularExpressionValidator以特定规则验证使用者输入的数据。CompareValidator验证使用者输入的数据和某个值用比较运算子比较是否成立。RangeValidator验证使用者输入的数据是否在指定范围内。CustomValidator自定的验证方式。ValidationSummary用来显示尚未通过验证的字段注意到都是Validation控件,Validation控件与Web控件类似。它们是在服务器端创建的,声明的语法也相同。第5章HTML控件和Web服务器控件7验证控件的类型(续)Validation控件与一般Web控件的不同之处在于,一般情况下是不显示的,即这种控件对于用户来说是不可见的。除非输入未通过验证控件的有效性验证,才显示提示信息,所以Validation控件的工作是监视另一个服务器控件、并验证其内容的有效性。Validation控件的ControlToValidata属性指定要监视用户输入服务器控件。当用户在被监视的控件输入数据时,Validation控件将检查这些数据,确保符合指定的所有规则。下面看在验证控件在VS.NET中的位置。下面分别介绍这几种Validation控件。第5章HTML控件和Web服务器控件81.RequireFieldValidatorWeb控件RequireFieldValidator验证控件可以用来强迫对某个WEB控件必需输入数据,其使用语法为:ASP:RequireFieldValidatorId=“控件对象名”Runat=ServerControlToValidate=要验证的控件名称ErrorMessage=所要显示的错误信息Text=未输入数据时所显示的讯息/ControlToValidate属性用来指明要检验的控件,而ErrorMessage属性用来提供给其它控件显示相关讯息,Text属性在使用者的输入没有通过验证时立即显示。第5章HTML控件和Web服务器控件91.RequireFieldValidatorWeb控件下列程序代码限制姓名字段一定要输入,否则无法触发按钮的事件程序:[例6.1]第5章HTML控件和Web服务器控件10RequireFieldValidator控件示例程序代码(ex62.aspx)HtmlFormId=Form1Runat=Server姓名:ASP:TextBoxId=txtNameRunat=Server/ASP:RequiredFieldValidatorId=Validor1Runat=ServerControlToValidate=txtNameText=必填项目/br电话:ASP:TextBoxId=txtTelRunat=Server/br住址:ASP:TextBoxId=txtAddRunat=Server/brASP:ButtonId=btnOKText=确定OnClick=btnOK_ClickRunat=Server/ASP:LabelId=lblMsgRunat=Server//FormScriptLanguage=C#Runat=ServervoidbtnOK_Click(objectsender,System.EventArgse){if(Page.IsValid)lblMsg.Text=验证成功!;}/Script/Html第5章HTML控件和Web服务器控件11服务器上的有效性验证客户端有效性验证是个很好的工具,解决了不少问题。但你仍然要在服务器端处理有效性验证。因为表单无效并不意味着ASP.NET不会执行代码,所以必须在方法中增加一些检验步骤。最简单的检验表单的有效性的方法是检查Page对象的IsValid的属性,如果所有的Validation控件都能通过验证,则该属性为true;如果任何一个Validation控件未通过,则为false。因此只需要检查该属性便可以决定是否执行代码。如前面例子的代码。if(Page.IsValid)lblMsg.Text=验证成功!;第5章HTML控件和Web服务器控件122.CompareValidatorWeb控件CompareValidatorWeb控件可以验证使用者输入的数据,和某个值利用比较运算。其使用语法为:ASP:CompareValidatorId=“验证控件名称”Runat=Server“ControlToValidate=要验证的控件名称Operator=DataTypeCheck|Equal|NotEqual|GreaterThan|GreaterThanEqual|LessThan|LessThanEqualType=“数据类别ControlToCompare=要比较的控件名称|ValueToCompare=要比较的值ErrorMessage=所要显示的错误信息Text=未通过验证时所显示的讯息/第5章HTML控件和Web服务器控件13CompareValidatorWeb控件属性其常用属性说明如下表所示:属性说明ControlToValidate所要验证的控件名称ErrorMessage所要显示的错误信息。Operator所要执行的比较种类,有:DataTypeCheck(只比较数据型态)、Equal(等于)、NotEqual(不等于)、GreaterThan(大于)、GreaterThanEqual(大于等于)、LessThan(小于)、LessThenEqual(小于等于)。其中如果为DataTypeCheck时,只需要填入要验证的数据型态,不需要设定ControlToCompare或是alueToCompareType所要比较或验证的数据类型,可以设定为:Currency、Date、Double、Integer第5章HTML控件和Web服务器控件14CompareValidatorWeb控件示例1(EX62.ASPX)(前面代码同前EX81.ASPX)…………年龄:ASP:TextBoxId=txtAgeRunat=Server/ASP:CompareValidatorId=Validor1Runat=ServerControlToValidate=txtAgeValueToCompare=18Operator=GreaterThanEqualType=IntegerText=您必须大于十八岁才可以浏览本站/br住址:ASP:TextBoxId=txtAddRunat=Server/br…………第5章HTML控件和Web服务器控件15CompareValidatorWeb控件示例2(EX63.ASPX)下列范例码限制使用者输入必须是整数型态的数据:HtmlFormId=Form1Runat=Server姓名:ASP:TextBoxId=txtNameRunat=Server/br……ControlToValidate=txtAgeOperator=DataTypeCheckType=IntegerText=您必须输入数值/br……{if(Page.IsValid)lblMsg.Text=“验证成功!”;}/Script/Html第5章HTML控件和Web服务器控件16CompareValidatorWeb控件示例3(EX64.ASPX)上述程序并没有限制使用者一定要输入年龄的数据,若要限制使用者一定要填入数据,可以搭配RequireFieldValidator来作验证;如下范例所示:………年龄:ASP:TextBoxId=txtAgeRunat=Server/ASP:CompareValidatorId=Validor1Runat=ServerControlToValidate=txtAgeOperator=DataTypeCheckType=IntegerText=您必须输入数值/ASP:RequiredFieldValidatorid=Validor2Runat=ServerControlToValidate=txtAgeText=必填项目/br住址:ASP:TextBoxId=txtAddRunat=Server/br第5章HTML控件和Web服务器控件173.RangeValidatorWeb控件RangeValidatorWeb控件可以限制使用者所输入的数据在指定的范围之内,其使用语法为:ASP:RangeValidatorId=“被程序代码所控制的控件名称Runat=ServerControlToValidate=要验证的控件名称MinimumValue=最小值MaximumValue=最大值MinimumControl=“限制最小值的控件名称”MaximumControl=限制最大值的控件名称Type=“资料型别”ErrorMessage=所要显示的错误信息Text=未通过验证时所显示的讯息/第5章HTML控件和Web服务器控件18RangeValidator控件其常用属性说明:属性说明ControlToValidate所要验证的控件名称。ErrorMessage所要显示的错误信息。MinimumValue限制可以接受的最小值。MaximumValue限制可以接受的最大值。MinimumControl限制可以接受最小值所要参考的控件。MaximumControl限制可以接受最大值所要参考的控件。Type所要比较或验证的数据型别,可以设定为:Currency、Date、Double、Integer、StringText未通过验证时所显示的讯息。第5章HTML控件和Web服务器控件19RangeValidator控件示例:(ex65.aspx)(前面代码同前)…………年龄:ASP:TextBoxId=txtAgeRunat=Server/ASP:RangeValidatorId=Validor1Runat=ServerControlToValidate=txtAgeMax