ASP.NET立即上手教程(6)

表单验证服务器控件

验证介绍

网络形成框架包括一套易用而功能强大的用于验证的服务器控件,用来检查输入表单的错误,并且在必要的时候,向用户显示提示信息。将验证控件添加到设计圈套表格,就像添加其他服务器控件一样。验证控件有不同的验证类型,例如范围检查或者模式匹配,添加一个RequiredFieldValidator 控件可以保证用户不能跳过某一个要求输入内容的字段。你可以对一个输入控件组合若干个验证控件。例如,你可能要求某一字段不能为空,并且必须输入某一个范围的值。验证控件与服务器控件的有限子集协同工作。也就是说,对于不同的控件,可能需要验证不同属性的值。

验证控件类型

最简单的验证表单是要求输入字段。不管用户在字段中输入了任何值,它就是验证通过的。如果页面中所有的字段都验证通过,那么页面也是验证通过的(page is valid)。下面的例子说明了RequiredFieldValidator验证控件的使用。

特定的验证情况需要不同的验证控件,例如范围检查或者模式匹配。

客户端验证

一般来说,验证控间总是在服务器端执行验证检查。 然而,如果用户正在使用一个支持 DHTML 的浏览器工作,验证控间也能使用客户端脚本来验证。藉由客户端确认,当表单提交给服务器的时候,客户端的任何检测的错误都可以发现。当任何一个验证控间发现错误的时候,提交到服务器的表单都会取消,同时显示验证控间的Text 属性。这就允许用户在表单提交到服务器之前,校正输入的错误。当包含错误的字段失去焦点的时候,该字段马上会被重新验证。这样就给用户提供了一种丰富的、交互式的验证过程。

注意:web forms页框架总是在服务器端执行验证,即使验证已经在客户端执行也是如此。这有助于防止冒名顶替和预订事务来通过验证。

默认情况下允许客户端验证。如果客户端条件允许,高版本浏览器验证模式将自动执行。要想禁止客户端验证,设置页面的 ClientTarget 属性为"Downlevel"("Uplevel" 强制客户端验证)

显示验证错误信息

当用户的输入开始处理(例如,当表单已经提交),Web Forms页面框架传递用户的输入到相关联的验证控件。验证控件测试用户的输入,并且设置属性来标志输入是否通过验证测试。所有的验证控件运行完毕之后,才设置页面的IsValid属性。如果任何一个验证控件显示了验证失败,整个页面的验证也是无效的。

如果验证控件监测到错误,该控件或者页面上的ValidationSummary 控件就会在页面上显示一条错误提示信息。ValidationSummary 控件显示错误提示的前提是页面的IsValid等于false。(也就是说,任何一个验证控件没有通过,都会激活ValidationSummary),它可以监测到每一个验证控件的验证错误,并且把所有的错误一次全部显示出来。下面的例子演示了ValidationSummary控件如何进行错误提示的。

使用比较验证控件CompareValidator

CompareValidator服务器验证控件用来比较两个控件的值。它使用三个关键属性来进行它的验证。ControlToValidate 和 ControlToCompare 包含要比较的值,Operator 定义了要进行的比较类型---例如,等于或者不等于等等。CompareValidator通过对表达式求值来执行验证,就象下面这样:

( ControlToValidate ControlToCompare )

如果表达式的值为true,验证结果为通过。

下面的例子说明了如何使用 CompareValidator 控件

使用范围验证控件 RangeValidator

RangeValidator 服务器控件测试输入值是否在一个给定范围之内。RangeValidator 使用三个关键属性来执行验证。 ControlToValidate 包含验证的对象,MinimumValue 和 MaximumValue 定义了有效范围的最小值和最大值。

下面的例子显示了如何使用RangeValidator 控件。

使用正则表达式验证控件RegularExpressionValidator

RegularExpressionValidator 服务器控件用来检查用户输入是否与正则表达式定义的模式匹配。这个控件允许你检查可预见的字符串系列,例如社会保障号码、电子邮件地址、电话号码和邮政编码等等。

RegularExpressionValidator 使用两个关键属性来执行验证。ControlToValidate 包含要验证的控件对象, ValidationExpression 包含用来匹配的正则表达式。

原教材对正则表达式说得比较少,这里我来补充一下:

正则表达式是一种功能强大的字符串定义规则,例如dos下熟悉的“*” 和“?” 他最早在unix中引入。在asp.net中,他的格式是[可接受字符]{ 范围}。举例来说,[a-z]{ 3,7}表示至少含有三个字符,最多含有7个字符,其中字符只能是’a’~’z’的范围,如”krpam”是合法的,而”12fe3”或者”5W”是不合法的。

在[]里面除了?-?的定义之外,也可以直接写出可接受的字符,例如[ourasp]表示只接受’o’、’u’、’r’、’a’、’s’、’p’这几个字符,而^表示反集合,例如[^aurasp],表示除了’o’、’u’、’r’、’a’、’s’、’p’以外,任何字符都接受。如果表示可接受任意字符,使用“.”来表示。例如, .{ 0,} 表示可以接受任意多个任意字符。

在{ }里面,除了常用的{ 3}、{ 2-13}这样的格式以外,还有以下常用的格式:{ n,} 表示至少输入n个字符。

“|” 符号表示or(或),例如[a-zA-Z]{ 3}|[0.9]{ 3}表示可接受的字符是3个英文字母或者3个数字字符。请注意他与[a-zA-Z0-9]{ 3}的区别。为了阅读上的方便,我们通常会把含有“|”符号的字符串放在()中,例如([a-zA-Z]{ 3}|[0.9]{ 3})上述的[]{ }.()|都是正则表达式中的特殊符号。如果希望可接受的字符串中包含这些字符,必须在这些字符前面加上斜线 \。例如,“\.{ 3}”,表示必须输入3个”.”。

下面的例子演示如何使用 ValidationExpression控件。

使用自定义验证控件 Custom Validation

CustomValidator 服务器控件调用用户自定义函数来执行一个标准验证控件无法处理得验证。该自定义函数既可以在服务器端执行,也可以在客户端脚本(如VBscript 或JScript)。对于客户端自定义验证,自定义函数名称必须在ClientValidationFunction 属性中明确指出。自定义函数必须使用这样的参数格式:

function myvalidator(source, arguments)

注意 source 参数是客户端CustomValidator ,arguments参数是带有两个属性Value 和 IsValid的对象, Value 属性对象的值, IsValid 属性是一个布尔值,用来设置返回的验证结果。

对于服务器端自定义验证,将你的自定义验证放置在验证控件的OnServerValidate 中。

下面的例子演示了如何使用CustomValidator 控件。

使用全部验证控件的例子

下面的例子演示了一个典型的注册表单,其中使用了本章讨论的所有验证控件

本章小结

1、验证控件可以用来检验Web Forms 页面的任何输入。

2、对于一个给定的输入字段,可以使用若干个验证控件来检验。

3、除了服务器端验证以外,也可以使用客户端验证来提高form的可用性。

4、CustomValidator 控件可以让用户自定义验证规则。

 

时间: 2024-08-02 14:05:51

ASP.NET立即上手教程(6)的相关文章

ASP.NET立即上手教程(1)

一.开始 1.介绍 欢迎光临ASP.NET立即上手教程. ASP.NET立即上手教程是由一系列实例和支持解说构成的,他的目的是为了让开发者快速理解ASP.NET的语法.框架以及ASP.NET网络应用程序框架的强大功能.所有的实例设计的短小而容易理解,可以充分展示ASP.NET的相应功能.在学习完本教程以后,你应该熟悉以下内容: ·ASP.NET语法.当然,对于熟练的ASP开发者,有些ASP.NET语法元素会很熟悉,而有些却是新框架所独有的.本教程的实例覆盖了所有语法元素的细节. ·ASP.NET

ASP.NET立即上手教程 10

asp.net|教程 在SQL数据库中更新数据在web应用程序中更新数据库常常是一件棘手的事情.DataGrid控件提供了一些内建的支持,使得更新数据库变得容易.要想编辑行记录,DataGrid支持一个整数类型的EditItemIndex属性,他用来指明表格控件的哪一行是可编辑的.当设定该属性之后,DataGrid中对应的行用输入框来代替标签.值-1表示没有可编辑的行.Asp.net页面可以在服务器端表单中包含DataGrid控件,通过DataGrid控件的对象模型来访问可编辑的数据.为了判断哪

ASP.NET立即上手教程 13(完)

asp.net|教程 利用商务对象来工作这几天元旦过得晕头转向,好不容易清醒过来 :-) 所以拖的时间久了一点,不好意思了.在商务组件中封装逻辑是实际应用程序,比如基于web的应用以及其他应用中,必不可少的部分.在ASP.NET中,商务对象是多层WEB应用程序内建的块.应用程序的 /Bin目录在传统的ASP应用程序中使用COM组件的时候有一个问题,那就是这些组件在使用前必须被注册(典型的做法是使用regsvr32工具).远程管理这种类型的的应用程序很不现实,因为注册工具必须在本地服务器运行.更麻

ASP.NET立即上手教程(2)

什么是asp.net的Web Forms Asp.net Web Forms 页面框架是可升级的通用语言运行时刻(CLR)程序模型,用来在服务器端动态生成WEB页面.(美国人说话就是别扭,其实Web Forms就是asp.net编写的页面) 作为ASP的合理演化(ASP.NET对现存的ASP提供语法兼容),ASP.NET Web Forms框架的设计目的,是用来解决ASP模式的不足.它提供: · 创建和使用可重用的用户界面控件,封装常用的功能,减少页面开发者书写代码的工作量. · 为开发者提供结

ASP.NET立即上手教程(3)

处理服务器控件事件 每一个asp.net服务器控件都具有对象模型的特点,包含属性.方法和事件.Asp.net开发者可以使用这个对象模型来动态修改页面,以及与页面交互. 下面的例子演示了asp.net页面开发者如何通过处理<asp:button runat=server>控件的OnClick事件,来操纵<asp:label runat=server> 控件的Text 属性. 这个简单的例子在功能上等于前面介绍的"Intro3" 例子.然而,你却可以发现基于服务器控

ASP.NET立即上手教程(4)

声明服务器控件 ASP.NET服务器控件使用包含runat="server" 属性的说明标志来声明.下面的例子声明了3个<asp:label runat="server">服务器控件,并且分别定制了文本和样式: C# Controls1.aspx 操作服务器控件 通过为服务器控件提供唯一的ID属性,你可以在页面中对每一个不同的服务器控件进行程序控制.使用ID作为参照,可以在运行时刻,使用程序来操作服务器控件的对象模型.例如下面的例子演示了页面开发者如何在

ASP.NET立即上手教程(5)

应用样式到HTML服务器控件 WEB是一个灵活的用户接口环境,不同的站点在视觉和感觉上极尽变化之能事.层叠式样式表(CSS)的广泛应用,极大的丰富了WEB的设计.所有ASP.NET的HTML服务器控件和WEB服务器控件,已经被设计为能够提供一流的CSS样式支持.这一部分讨论如何应用样式到服务器控件,并且演示服务器控件在WEB FORMS中所提供的精细的外观控制. 应用样式到 HTML服务器控件 标准的HTML标签通过STYLE属性来支持CSS,STYLE属性由一系列成对出现的以分号分割的 属性/

ASP.NET立即上手教程(8)

Asp.net引入了一种新的声明数据绑定的语法.这种极其灵活的语法允许开发者不仅绑定数据源,而且可以绑定简单的属性.集合.表达式.甚至是调用方法所返回的结果.下面的列表显示了这种新语法的一些例子: 简单属性 Customer: <%# custID %> 集合 Orders: <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server"> 表达式 Contac

ASP.NET立即上手教程(7)

Web Forms 用户控件 用户控件介绍 除了ASP.NET提供的内建的服务器控件外,你还可以使用已经掌握的制作WEB FORMS 页面的技术,轻松的定义自己的控件.实际上,只需要稍微改动一下,几乎任何WEB FORMS页面都可以作为服务器控件,在其他页面上重复使用.(注意用户控件的类型是System.Web.UI.UserControl, 它直接从System.Web.UI.Control继承而来). Web Forms 页面被作为服务器控件使用的时候,简称为用户控件.转变之后,通常使用.a