版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章数据验证控件
本讲教学内容ASP.NET中数据验证控件的工作原理必填验证控件的使用比较验证控件的使用范围验证控件的使用规则验证控件的使用用户验证控件的使用何为Web页面验证?检查用户输入信息的有效性,向用户提示输入错误信息,从而确定不同的操作流程。Web页面验证的重要性:是保证Web应用安全性的重要途径和手段。.NET提供的帮助:提供了功能强大、方式多样、层次分明、使用简单的Web页面验证能力,其中验证控件是核心内容。7.1数据有效性验证机制简介何为验证控件?是ASP.NET提供的、用来实现不同验证目的的控件;可以和Web页面中的任意控件一起使用,并为其提供一种验证机制。验证类型:必须验证、比较验证、范围验证、模式验证、自定义验证说明:
1、主要是为输入控件提供验证(服务器控件);
2、在执行事件之前验证;
3、验证控件可以结合使用;7.1数据有效性验证机制简介2.ASP.NET提供的数据验证控件传统的动态Web技术中,如果需要验证某个数据是否有效,开发人员必须动手编写一段代码来进行判断。通常需要判断的条件很多,代码会非常冗长。ASP.NET中提供了一系列容易使用且功能强大的验证控件,可以按预定义的标准检查用户的输入是否合法。验证服务器控件是一个控件集合,这些控件允许验证关联的输入服务器控件,并在验证失败时显示自定义消息。每个验证控件执行特定类型的验证。可通过使用比较验证控件CompareValidator和范围验证控件RangeValidator分别针对某个特定值或值范围进行验证。甚至还可通过使用用户验证控件CustomValidator定义自己的验证判据。使用验证汇总控件ValidationSummary,还可以用于显示页上所有验证控件的结果摘要。7.1数据有效性验证机制简介2.ASP.NET提供的数据验证控件控件名称说明RequiredFieldValidator确保用户不跳过某些必填的输入项CompareValidator使用比较运算符将用户的输入与另一控件的常数值或属性值进行比较RangeValidator检查用户的输入是否在指定的上下边界之间,可以检查数字、字母或日期对内的范围。RegularExpressionValidator检查输入是否与正则表达式定义的模式匹配。该验证类型允许检查可预知的字符序列CustomValidator使用您自己编写的验证逻辑检查用户的输入,该验证类型允许检查运行时导出的值ValidationSummary以摘要的形式显示页上所有验证程序的验证错误验证时机:
1、通常在处理Click事件时调用验证;
2、页面处理期间调用控件的Validate方法,实现“及时验证”。验证多个条件:
1、每个输入控件可以执行一个以上的验证检查;
2、通过逻辑“与”对每个输入控件执行多项验证检查;
3、通过逻辑“或”对每个输入控件执行多项并列验证检查;错误信息的显示:验证控件通常在呈现的窗体中不可见,检测到错误时可以:1、通过验证控件本身显示出来;2、通过ValidationSummary控件把所有的验证错误信息集中起来显示。服务器端验证:包含验证操作的页面必须提交到服务器端后,服务器将逐个调用验证控件来检查用户输入,完成页面验证。客户端验证:
验证操作在页面提交给服务器前由客户端浏览器解释执行。客户端验证能明显的缩短页面的响应时间,错误信息会在用户离开有错控件后立即显示。说明:
即使验证控件已在客户端执行验证,页框架仍然在服务器上执行它。7.1数据有效性验证机制简介3.验证控件的验证机制在处理用户输入的数据时,ASP.NET页面首先将用户输入传递到一个或多个适当的验证控件。验证控件将测试用户输入并设置表示输入是否通过测试的属性。在调用所有验证控件之后,页上将设置一个属性(IsValid),如果任何一个控件显示验证检查失败,则整个页的属性都将设置为无效。如果数据验证没有通过(IsValid属性为False),错误信息可由该验证控件显示在页面中,或者显示在页面上其它位置的验证汇总ValidationSummary控件中。7.1数据有效性验证机制简介3.验证控件的验证机制属性名描述和取值ControlToValidate验证控件将计算的输入控件的编程ID。如果此为非法ID,则引发异常EnableClientScript指示是否启用客户端验证。通过将EnableClientScript属性设置为false,可在支持此功能的浏览器上禁用客户端验证Display指定的验证控件的显示行为。可以仅在ValidationSummary控件中显示错误信息;或在验证控件位置显示错误信息;或在页面上动态分配错误信息显示的空间Enabled指示是否启用验证控件。可通过将该属性设置为False以阻止验证控件验证输入控件7.1数据有效性验证机制简介3.验证控件的验证机制属性名描述和取值ErrorMessage当验证失败时在ValidationSummary控件中显示的错误信息。如果未设置验证控件的
Text属性,则验证失败时,验证控件中仍显示此文本。ErrorMessage属性通常用于为验证控件和
ValidationSummary控件提供各种消息ForeColor指定当验证失败时用于显示内联消息的颜色。IsValid指示ControlToValidate属性所指定的输入控件是否被确定为有效Text此属性设置后,验证失败时会在验证控件中显示此消息。如果未设置此属性,则在控件中显示
ErrorMessage属性中指定的文本7.2必填验证(RequireFieldValidator)控件使用RequiredFieldValidator控件可以使某个输入控件成为强制字段。当验证执行时,如果输入控件包含的值仍然保持初始值而未更改,则该输入控件验证失败。在默认情况下,验证控件的初始值(InitialValue属性)为空字符串(“”),这说明必须在输入控件中输入值才能通过验证。必填验证控件的语法如下:
<ASP:RequiredFieldValidator
ID="Validator_Name"Runat="Server"
ControlToValidate="要检查的控件名"
ErrorMessage="出错信息"Display="Static|Dymatic|None"></ASP:RequiredFieldValidator>7.2必填验证(RequireFieldValidator)控件有时初始值不为空字符串。当输入控件具有默认值而且希望用户选择其他值时,这将非常有用。例如,默认情况下,可能有一个具有选定输入的ListBox控件,其中包含用户从列表中选择项的说明。用户必须从控件中选择一项,若不希望用户选择包含说明的项。则可通过将该项的值指定为初始值来防止用户选择该项。如果用户选择该项RequriedFieldValidator将显示它的错误信息。若要指定关联输入控件的起始值,则可设置InitialValue属性。多个验证程序可与同一个输入控件关联。例如:可在页面中使用一个RequiredFieldValidator验证控件确保有信息输入到控件中,同时可使用另一个RangeValidator验证控件确保输入值在指定的数据范围内。7.2.1对用户名和密码进行验证
【例7-1】用户名和密码的验证
对于大多数系统,用户登录页面都是必需的。在此实例中,将使用必填验证控件完成用户提交的用户名和密码的验证,避免用户漏填。详细过程可上机操作并参见教材内容。7.2.2对下拉框进行验证
【例7-2】下拉框用户选择信息的验证
表单中用于获取用户信息的控件有很多,如:下拉框、列表框、复选框、单选框等,在这些输入框中,用户输入或选择的信息也同样需要验证。本实例中将对表单中用户选择输入项的下拉框进行用户所选项的验证。详细过程可上机操作并参见教材内容。7.3比较验证(CompareValidator)控件
比较验证CompareValidator控件可以将用户输入到一个输入控件中的值同输入到另一个输入控件中的值相比较,或将该值与某个常数值相比较。还可以使用CompareValidator控件确定输入到输入控件中的值是否可以转换为Type属性所指定的数据类型。比较验证控件的语法如下:
<ASP:CompareValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要验证的控件ID"
ErrorMessage="错误信息"ControlToCompare="要比较的控件ID"Type="String|Integer|Double|DateTime|Currency"Operator="Equal|NotEqual|GreaterThan|GreaterTanEqual|LessThan|LessThanEqual"
DataTypeCheck"Display="Static|Dymatic|None"></ASP:CompareValidator>
7.3比较验证(CompareValidator)控件
通过设置ControlToValidate属性指定要验证的输入控件。若要将特定的输入控件与另一个输入控件相比较,则使用要比较的控件的名称设置ControlToCompare属性。可以将一个输入控件的值同某个常数值相比较,而不是比较两个输入控件的值。通过设置ValueToCompare属性指定要比较的常数值。
Operator属性指定要执行的比较类型,如大于、等于等。如果将Operator属性设置为DataTypeCheck(类型检查),CompareValidator控件将同时忽略ControlToCompare属性和ValueToCompare属性,而仅指示输入到输入控件中的值是否可以转换为Type属性所指定的数据类型。7.3.1使用验证控件的四则运算
【例7-3】带有数据校验的四则运算在页面数据理中,加减乘除四则运算是较常用的基本运算,下面的实例中将首先实现任意输入两个整型数的四则运算。详细过程可上机操作并参见教材内容。7.3.2密码和确认密码的比较验证
【例7-4】密码和密码确认信息的比较验证
当用户在某个网站上注册时,通常需要用户填写登录时使用的用户名和密码,由于密码框中字符使用点号或星号来表示,通常都需要用户再次确认密码,只有两个输入的密码完全相同,才能保证用户输入的密码确实是自己预期想要输入的密码。在本实例中,使用比较验证控件来验证用户输入的密码确实是自己预期想要输入的密码。详细过程可上机操作并参见教材内容。7.4范围验证(RangeValidator)控件可使用该控件检查用户的输入是否在指定的上限和下限之间。可以检查数字对、字母对和日期对限定的范围。范围验证控件的语法为:
<ASP:RangeValidator
ID="Vaidator_ID"Runat="Server"
ControlToValidate="要验证的控件ID"Type="String|Integer|Double|Date|Currency"
MinimumValue="最小值"MaximumValue="最大值"
ErrorMessage="错误信息"Display="Static|Dymatic|None"></ASP:RangeValidator>7.4范围验证(RangeValidator)控件使用ControlToValidate属性指定要验证的输入控件,MinimumValue和MaximumValue属性分别指定有效范围的最小值和最大值。
Type属性用于指定要比较的值的数据类型,有String字符串、Integer整型数、Double双精度的浮点型数、Date日期类型、Currency货币类型。在执行任何比较之前,先将要比较的值转换为该数据类型。
注意:如果输入控件为空,则不调用任何验证函数且验证成功。需要使用RequiredFieldValidator必填验证控件防止用户跳过某个输入控件。由MaximumValue最大值属性或MinimumValue最小值属性指定的值,当无法转换为由Type类型属性指定的数据类型时,RangeValidator范围验证控件将引发异常。7.4.1控制正确数据范围
通常用户在页面上输入数据时,某些数据是有范围限定的,比如:用户年龄、时间日期、学生成绩等,需要使用另一类验证控件——范围验证RangeValidator控件来验证用户输入数据的范围是否满足,增强系统的容错性。【例7-5】用户生日日期范围验证使用范围验证控件,对用户输入的生日日期范围进行验证,保证登录系统的用户年龄在18-80岁之间。详细过程可上机操作并参见教材内容。7.4.2使用区间验证控件验证学生成绩
RangeValidator范围验证控件还可完成String字符串、Integer整型数、Double双精度的浮点型数、Date日期类型、Currency货币类型数据的验证。【例7-6】学生成绩范围验证本实例将进行学生成绩(0-100)的整型数验证,使用范围验证控件来实现学生成绩信息的范围验证,防止用户输入错误。详细过程可上机操作并参见教材内容。7.5规则验证控件
RegularExpressionValidator规则验证控件用于确定输入控件的值是否与某个正则表达式所定义的模式相匹配。该验证类型允许检查可预知的字符序列,如:社会保障号、电子邮件地址、电话号码、邮政编码等中的字符序列。规则验证控件的语法如下:
<ASP:RegularExpressionValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要验证控件名"
ValidationExpression="正则表达式"
ErrorMessage="错误信息"Display="Static|Dymatic|None"></ASP:RegularExpressionValidator>7.5规则验证控件
客户端的正则表达式验证语法和服务器端略有不同。在客户端,使用的是JScript正则表达式语法。而在服务器端使用的则是Regex语法。由于JScript正则表达式语法是Regex语法的子集,所以最好使用JScript正则表达式语法,以便在客户端和服务器端得到同样的结果。7.5.1规则验证控件常用的属性和事件
1.规则验证控件的属性
规则验证控件的属性与其他验证控件的属性相似,常用的有:
使用待验证控件ControlToValidate属性指定被验证的控件的ID属性;
使用Text属性获取或指定该验证控件未通过验证时在验证控件中显示的文本,若未设定将显示错误信息ErrorMessage属性的文本;
使用ErrorMessage属性指定未通过验证时显示在验证摘要控件中的文本信息;
使用验证表达式ValidationExpression属性用于确定有效性的正则表达式。7.5.1规则验证控件常用的属性和事件
2.规则验证控件的事件
规则验证控件的事件主要有:
验证Validate事件,用于对关联的输入控件进行验证时触发;
数据绑定DataBinding事件,在要验证控件的数据绑定表达式时触发;
释放Dispoesd事件,在该验证控件已被释放后触发;
页面加载Load事件,在加载页面后触发;
页面卸载Unload事件,在卸载验证控件所在页面时触发。7.5.2创建正则表达式
正则表达式(也称正规式)是计算机编译原理中,用来描述单词符号的方便工具。正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;将提取的字符串添加到集合以生成报告。对于处理字符串(例如:HTML代码、日志文件分析和HTTP标头分析)的许多应用程序而言,正则表达式是不可缺少的工具。在RegularExpressionValidator规则验证控件中,对于页面中输入框中所能接受的文本字符串样式,都可以通过正规表达式来表示。下面先简单介绍正规表达式的基本组成和写法。7.5.2创建正则表达式
1.
正规表达式书写形式
[] 用来定义可接收的字符
{} 用来定义必须输入的字符数
|
用来表示“或”
() 表示可以使用括号
\
表示转义例如:[a-z]匹配小写英文字母;[A-Z]匹配大写英文字母;[a-zA-Z]则匹配所有大小写英文字母;[0-9]匹配所有数字;[\.\-\+]匹配所有句号、减号和加号;[^a-z]指除了小写英文字母以外的所有字符;[^0-9]指除了数字以外的所有字符。7.5.2创建正则表达式
2.常用匹配符号
.匹配除“\n”(回车换行)之外的任何字符*指定零个或更多个匹配
+指定一个或多个匹配
?指定零个或一个匹配
[指定字符集] 匹配指定字符集中包含的任何单个字符
[^指定字符集] 匹配不在指定字符集中的任何单个字符
[0-9a-fA-F] 使用连字号“–”指定连续字符范围
\s与任何空字符匹配
\d与任何十进制数字匹配
\w与任何单词字符匹配,包括大小写字母、数字和下划线7.5.2创建正则表达式
3.正则表达式的书写举例
[a-zA-Z]{4,8}表示要求4-8个英文字母
[^a-zA-Z]{1,}表示不能包含字母,至少1个字符
[0-9]{3,}表示至少3个数字
{3,}表示至少3个字符
[a-zA-Z]{3,}表示至少3个英文字母
.{0,}表示任意字符
[A-Za-z0-9]{3}表示3个字母或数字,如123,r3a等
\.{3}表示3个点
.{1,}@.{3,}表示@前至少有1个字符,@后至少有3个字符
\(表示必须输入左括号7.5.2创建正则表达式
3.正则表达式的书写举例
.{0,}河南.{0,} 表示必须包含有“河南”两个字
\d{18}|\d{15}表示身份证号码
(\d{3,4}-)?\d{7,8}表示中国的固定电话号码(其中?表示最前的区号部分可出现一次,或不出现)从上面的介绍和举例可看出,正则表达式是一种文本模式,包括普通字符和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式的结构与算术表达式的结构类似。即各种元字符和运算符可以将小的表达式组合起来,创建大的表达式。7.5.2创建正则表达式
4.正则表达式的优先级
正则表达式按从左到右的顺序进行计算,并遵循规定的优先级顺序,这与算术表达式非常类似。下表从最高级到最低级说明了各种正则表达式运算符的优先级顺序。
运算符说明\转义符(),(?:),(?=),[]括号和中括号*,+,?,{n},{n,},{n,m}限定符^,$,\anymetacharacter,anycharacter定位点和序列|替换7.5.3电子邮件验证
在用户注册页面中,通常需要用户填写电子邮件地址,然而电子邮件地址的组成较复杂,不能简单地用前面介绍的必填验证控件、比较验证控件或范围验证控件来验证,需要用特定的正规表达式来验证。在E-mail地址验证时要求:
(1)必须包含一个“@”;
(2)在“@”后面的字符串至少包含一个“.”号;
(3)“@”前面和后面的字符串由一个或一个以上字母、数字、下划线或减号构成。根据这几条规则,可以得出以下正则表达式:
[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}7.5.3电子邮件验证
【例7-7】电子邮件地址验证本实例将在页面中对用户提交的电子邮件地址进行验证。详细过程可上机操作并参见教材内容。7.5.4带有0.5分的百分制成绩验证
通常录入学生成绩时,会遇到带0.5的情况。首先分析一下表示带有0.5的从0到100的数据正则表达式,1位整数部分带有或不带有0.5的正则表达式为[0-9](.5)?或\d{1}(.5)?;2位整数部分带有或不带有0.5的正则表达式为[0-9]{2}(.5)?或\d{2}(.5)?,但通常不会出现例如07.5的成绩,因而还需去掉十位上的0,改进后的正则表达式为[1-9][0-9](.5)?或[1-9]\d{1}(.5)?;3位整数部分时只有100。综合上面的3种情况,可得出正则表达式为(100)|([1-9]?[0-9](.5)?)。7.5.4带有0.5分的百分制成绩验证
【例7-8】带有0.5的百分制学生成绩验证
本实例将使用规则验证控件实现学生成绩的验证,使用规则验证控件中的正则表达式对输入的成绩进行格式的检查和验证。详细过程可上机操作并参见教材内容。7.6用户验证(CustomValidator)控件前面介绍的验证控件可以完成特定的数据验证,满足用户数据验证的需求,然而由于它们专门针对特定的数据格式进行验证,灵活性较差。而用户验证CustomValidator控件则可采用自定义的验证逻辑创建验证控件。用户验证控件的语法如下:
<ASP:CustomValidator
ID="Validator_ID"RunAt="Server"
ControlToValidate="要验证的控件"
OnServerValidateFunction="验证函数"
ErrorMessage="错误信息"Display="Static|Dymatic|None"></ASP:CustomValidator>7.6用户验证(CustomValidator)控件通常验证控件大多是在服务器上执行验证检查,它们同时还具有完整的客户端实现,该实现允许支持DHTML的浏览器(如MicrosoftInternetExplorer4.0或更高版本)在客户端执行验证。客户端验证通过在向服务器发送用户输入前检查用户输入来增强验证过程。这使得在提交窗体前即可在客户端检测到错误,从而避免了服务器端验证所需要的信息的来回传递,减少了网络的数据流量,加快了数据的处理速度。若要创建服务器端验证函数,则需为执行验证的ServerValidate事件提供处理程序,通过将ServerValidateEventArgs对象的Value属性作为参数传递到事件处理程序,可以获取来自要验证的输入控件的字符串。验证结果随即存储在ServerValidateEventArgs对象的IsValid属性中。7.6用户验证(CustomValidator)控件对于客户端自定义验证,首先,需编写验证函数,并添加到.aspx
页面中;然后,将该验证函数的名称标识设置给CustomValidator用户验证控件的ClientValidationFunction属性。自定义函数的形式必须为function函数名(source,args)。其中,source是客户端CustomValidator对象,而args(arguments简写)是具有Value和IsValid两个属性的对象。Value属性是要验证的值,而IsValid属性是一个布尔值,用于判断验证是否通过的返回结果。与其它验证控件不同的是,CustomValidator用户验证控件可以在输入为空值时决定是否验证。ValidateEmptyText属性默认为false,即为空时不验证(此时跟其它控件是一样的都不验证),而若将该属性设为true,则当验证的输入控件为空时同样进行验证,从而有效地保证验证的有效性。7.6用户验证(CustomValidator)控件另外与其它验证控件不同的是,CustomValidator用户验证控件可以不必绑定到某一表单控件,即ControlToValidate属性不是必须的。不指定绑定的输入控件时,在验证函数中,可以直接通过语句访问获取表单中任意输入控件的属性值,从而进一步完成数据验证,因而为数据验证提供了极大的灵活性。7.6.1验证输入的数据是否为双休日
在页面上经常需要用户填写日期数据,对日期数据格式和范围的验证前面的实例中已经讲解,在下面的实例中,将对用户填写日期的周信息(星期几)进行验证。
CustomValidator用户验证控件提供服务器验证和客户端验证两种方式,下面的两个实例将分别采用服务器端验证和客户端验证,来实现验证用户输入日期是否为双休日。【例7-9】采用服务器端验证实现验证用户输入日期是否为双休日
本实例采用的是服务器端验证,需要编写在服务器端运行的用户验证控件的ServerValidate事件代码,完成对输入数据的验证。详细过程可上机操作并参见教材内容。7.6.1验证输入的数据是否为双休日
【例7-10】采用客户器端验证实现验证用户输入日期是否为双休日本实例采用的是客户端验证,需使用JavaScript编写客户端运行的验证函数;并将该验证函数的名称标识设置给CustomValidator用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省黄石市2024年中考数学模拟考试试卷附答案
- 美容院顾客反馈收集与分析
- 科技园区企业创新能力归类分析
- 高一化学二第一章第三节化学键练习
- 2024高中地理第3章区域自然资源综合开发利用第1节第1课时资源开发条件能源基地建设学案新人教版必修3
- 2024高中物理第三章磁场课时25运动电荷在磁场中受到的力训练含解析新人教版选修3-1
- 2024高中语文第四单元创造形象诗文有别方山子传训练含解析新人教版选修中国古代诗歌散文欣赏
- 2024高考化学一轮复习专练52实验综合应用一含解析新人教版
- 2024高考化学一轮复习第一部分考点38晶体结构与性质强化训练含解析
- 2024高考化学一轮复习课练29化学实验常用仪器和基本操作含解析
- 初二上册历史总复习知识点考点总结(浙教版)
- 土壤农化分析课件
- 初中英语趣味题50道及答案
- 小区大型团购活动策划
- 急性早幼粒细胞白血病教学演示课件
- 《望人中诊病讲义》课件
- 公务员考试申论电子教材及国家公务员考试申论电子教材
- 度假村开发方案
- 田园水景打造方案
- 广东省惠州市2022-2023学年高一上学期期末考试物理试题(含答案)
- 2023年租赁风控主管年度总结及下一年展望
评论
0/150
提交评论