·1·
第6章 数据验证控件
下面将介绍一类可以对用户在页面上的输入数据进行验证的服务器控件:数据验证控件。
6.1 概述
在Web 应用中,常常对用户输入的数据进行合法性验证,以保证系统能正确执行,例如图6.1所示的用户注册页面,相信读者肯定遇到过。
图6.1 对用户的输入进行验证的注册页面
针对这一类问题,https://www.doczj.com/doc/ee13947383.html, 提供了一组内置的控件,利用它们可以非常方便的完成页面数据验证,开发者甚至可以不用写一句代码,具体的控件如表6.1所示。
表6.1 验证控件列表 控件
功能 图6.1中的示例 RequiredFieldValidator
要求用户必填 “用户名”项 CompareValidator 将用户的输入与常数、另一个控件或数据库值
进行比较
“重复密码”项 RangeValidator 确保用户输入的值在指定的上下限范围之内
“年龄”项 RegularExpressionValidator 确保用户输入匹配正则表达式定义的模式
“电子邮件”项 CustomValidator 确保用户输入的内容符合自定义的验证逻辑
“同意”单选按钮 ValidationSummary 在网页、消息框或在这两者中内联显示所有验
证错误的摘要 “提交”按钮下面的所有出错信息
·414· 6.2 验证控件
同标准服务器控件相同,验证控件也位于System.System.Web.UI.WebControls 命名空间中,包括必填验证控件、比较验证控件、范围验证控件、正则验证控件、自定义验证控件,以及验证摘要控件,下面本节就这一系列控件逐一进行介绍。
6.1.1 必填验证控件RequiredFieldValidator
必填验证控件RequiredFieldValidator 控件要求用户必须填写页面上某个输入控件,否则将显示错误信息。
1.创建RequiredFieldValidator 对象
有两种方式在页面上添加一个RequiredFieldValidator 对象:
(1)在页面的源视图中,通过添加代码实现。例如要添加ID 为“RequiredFieldValidator1”的RequiredFieldValidator 对象,并指定其“监督”的输入控件为TextBox1,可以通过添加下面的代码实现: 1.
2. "TextBox1" runat="server">
3. Text="TextBox1未填时的报错信息 " ControlToValidate="TextBox1">
4.
(2)利用图形化操作。在工具箱的“验证”选项卡中,将拖放到页面中(或者直接双击)便可在页面上添加一个RequiredFieldValidator 对象。通过其属性面板中的“ControlToValidate ”选项可选择其监督的控件,如图6.2所示。
图6.2 通过属性面板设置所监督的输入控件
·415·
2.常用属性
验证控件一般不使用其事件和方法,最重要的是其静态属性。RequiredFieldValidator 常用的属性如图6.3所示。
Text ErrorMessage
Display
图6.3 RequiredFieldValidator 属性
其中:
ControlToValidate :获取或设置所监督的必填输入控件。
Display :获取或设置验证控件中错误信息的显示行为,属性值未ValidatorDisplay
枚举之一,主要包括如下:
Dynamic :验证失败时动态添错误信息,页面上没有为验证内容分配的空间;
None :验证失败时错误信息不显示在验证控件中,而是在一个固定的网页位置上总
结所有的错误信息。
Static :默认值,在页面上为错误信息分配固定的空间来显示错误信息。此时,同
一输入控件的多个验证程序必须在页面上占据不同的位置。
ErrorMessage :必须结合ValidationSummary 控件使用,验证失败时在后者中显示
的错误信息的文本。暂时不使用ValidationSummary 对象,将在【9.1.6】节中对其统一讨论。
Text :获取或设置验证失败时验证控件中显示的文本。
3.示例
本小节实现的示例效果如图6.4所示,当用户没有在文本框中填入信息,页面会出现错误提示信息。
图6.4 使用RequiredFieldValidator 控件示例
(1)新建https://www.doczj.com/doc/ee13947383.html, 网站Example_RequiredFieldValidator ,在Default.aspx 页面上添加1个文本框以及一个必填验证控件,HTML 代码如下。
·416·
代码6-1 必填验证控件定义:Default.aspx
1.
2. 姓名:
3. Text="警告:请填写姓名信息!" ControlToValidate="TextBox1">
4.
(2)使用【Ctrl+F5】运行程序,首先在文本框中输入任意数据,然后将光标单击页面其他地方,使文本框失去光标焦点。此时,RequiredFieldValidator并不会给出警告。继续将文本框中的数据清空,然后使其失去焦点,就会看到图6.4所示的验证结果。
6.1.2 比较验证控件CompareValidator
比较验证控件CompareValidator将用户的输入与特定的目标进行比较,具体而言,比较目标包括:
其他控件中的值。
常数值。
特定的数据类型。
下面将介绍如何创建一个CompareValidator对象。
1.创建CompareValidator对象
有两种方式在页面上添加一个CompareValidator对象:
(1)在页面的源视图中,通过添加代码实现。例如要添加ID为“CompareValidator1”的CompareValidator对象,并指定与其结合使用的输入控件为TextBox1,可以通过添加下面的代码实现:
1.
2.
3. Text="警告:输入与TextBox1中的数据不一致!" ControlToValidate="TextBox1">
4.
(2)利用图形化操作。在工具箱的“验证”选项卡中,将拖放到页面中(或者直接双击)在页面上添加一个CompareValidator对象。
2.常用属性
·417·CompareValidator常用的属性如图6.5所示。
ControlToCompare
ControlToValidate
Operator
ValueToCompare
Type
ErrorMessage
图6.5 CompareValidator常用成员
其中:
ControlToCompare:获取或设置要与所验证的输入控件进行比较的输入控件。
ControlToValidate:获取或设置要验证的输入控件,如果为空,则不调用任何验证函数,并且验证将成功。
Operator:获取或设置要执行的比较操作,取值为ValidationCompareOperator枚举值,主要包括如下。
DataTypeCheck:只对数据类型进行的比较。
Equal:相等比较。
GreaterThan:大于比较。
GreaterThanEqual:大于或等于比较。
LessThan:小于比较。
LessThanEqual:小于或等于比较。
NotEqual:不等于比较。
ValueToCompare:获取或设置一个常数值,该值与由用户输入的值进行比较;
Type :获取或设置在比较之前将所比较的值转换到的数据类型,具体包括如下:String:字符串数据类型。
Integer32:位有符号整数数据类型。
Double:双精度浮点数数据类型。
Date:日期数据类型。
Currency:一种可以包含货币符号的十进制数据类型。
ErrorMessage、Text,及Display属性与RequiredFieldValidator相同,不作赘述。
3.示例1:验证输入数据的数据类型
本小节实现的示例效果如图6.6所示,当用户没有在文本框中填入信息不为数字时,页面会出现错误提示信息。
·418
·
图6.6 使用CompareValidator 控件示例
(1)新建https://www.doczj.com/doc/ee13947383.html, 网站Example_CompareValidator ,在Default.aspx 页面上添加1个文本框以及1个比较验证控件,HTML 代码如下。
代码6-2 比较验证控件定义:Default.aspx 1.
2.
3. 4. Operator ="DataTypeCheck" 5. Text ="警告:输入格式错误!" 6. ControlToValidate ="TextBox1" 7. Type ="Integer"> 8.
9.
(2)使用【Ctrl +F5】运行程序,当不在文本框中输入可以转化为整数类型的数据时,将光标单击页面其他地方,使文本框失去光标焦点,页面将显示警告信息,如图6.6所示。
4.示例2:用户输入与常数比较
下面实现的示例效果如图6.7所示,当文本框中的输入小于18时,页面将显示警告信息,提示用户的输入错误。
图6.7 常数比较示例
(1)在【示例1】的基础上添加一个新的比较验证控件CompareValidator2,代码如下:
代码6-3 常数比较示例:Default.aspx
1. ·419·2. Text ="警告:您必须大于18岁!" 3. ControlToValidate ="TextBox1" 4. Operator = "GreaterThan" 5. ValueToCompare = "18"> 6.
5.示例3:用户输入与另一个控件比较
下面实现的示例效果如图6.8所示,当用户两次输入的密码不一致时,页面将显示警告信息。
图6.8 与其他控件比较示例
(1)在【示例1】的基础上,添加2个新文本框控件TextBox2和TextBox3,以及1个比较验证控件CompareValidator3,设置三者属性如下: 代码6-4 与控件比较示例:Default.aspx 1. 2. TextMode = "Password"> 3.
4.
5. 6. TextMode ="Password"> 7.
8.
9. 10. Text ="警告:两次输入不一致!" 11. ControlToValidate = "TextBox2" 12. ControlToCompare = "TextBox3"> 13.
(2)使用【Ctrl +F5】运行程序。
·420·6.1.3 范围验证控件RangeValidator
范围验证控件RangeValidator 控件验证用户的输入是否在指定范围内,例如保证“年龄”输入框中的值在一个合理的整数范围之内等等。
1.创建RangeValidator 对象
有两种方式在页面上添加一个RangeValidator 对象:
(1)在页面的源视图中,通过添加代码实现。例如添加ID 为“RangeValidator1”的RangeValidator 对象,并指定与其结合使用的输入控件为TextBox1,可以通过添加下面的代码实现: 1. 2. Text ="警告:您输入的范围错误!" 3. ControlToValidate ="TextBox1" > 4. (2)利用图形化操作。在工具箱的“验证”选项卡中,将拖放到页面 中(或者直接双击)可在页面上添加一个RangeValidator 对象。 2.常用属性 RangeValidator 常用的属性如图6.9所示。 ErrorMessage Type MaximumValue MinimumVlaue ControlToValidate 图6.9 RangeValidator 常用成员 其中: MinimumVlaue :验证范围的最小值; MaximumValue :验证范围的最大值; 其余属性均与CompareValidate 相同,不再赘述。 在将用户的输入与MaximumValue 或MinimumValue 比较前,RangeValidator 首先将用户输入转化为其Type 属性指定的数据类型,如果转化失败,则RangeValidator 控件将引发异常。 另外,使用RangeValidator 时,如果与其结合使用的输入控件为空,则验证将成功。 3.示例 本小节实现的示例效果如图6.10所示,当用户在文本框中输入的数据不在1~100之前 ·421· 时,页面会出现错误提示信息。 图6.10 使用RangeValidator 控件示例 (1)新建https://www.doczj.com/doc/ee13947383.html, 网站Example_RangeValidator ,在Default.aspx 页面上添加1个文本框以及1个范围验证控件,HTML 代码如下: 代码6-5 范围验证控件定义:Default.aspx 1. ="TextBox1"runat="server"> 4. Text = "警告:年龄数据范围错误!" 5. MinimumValue = "0" 6. MaximumValue ="100" 7. ControlToValidate ="TextBox1" 8. Type ="Integer"> 9. 10. div > (2)按【Ctrl +F5】键运行程序,结果如图6.10所示。 6.1.4 正则验证控件RegularExpressionValidator 正则表达式验证控件RegularExpressionValidator 用于验证用户的输入是否满足某个“规则”,这个规则使用正则表达式来定义。例如,定义电子邮件(如:zhangsan@https://www.doczj.com/doc/ee13947383.html, )的构成规则具体如下: (1)第1部分是包含字母、数字的任意字符串。 (2)第2部分紧跟“@”。 (3)第3部分又是包含字母、数字的任意字符串。 (4)第4部分是符号“.”。 (5)最后是几个特定的字符串,如“com ”、“net ”以及“https://www.doczj.com/doc/ee13947383.html, ”等。 如果满足这个规则,利用RangeValidator 就可以验证用户的输入是否合法。 1.创建RegularExpressionValidator 对象 ·422· 有两种方式在页面上添加一个RegularExpressionValidator对象: (1)在页面的源视图中,通过添加代码实现。如添加ID为“RegularExpressionValidator1”的RegularExpressionValidator对象,并指定与其结合使用的输入控件为TextBox1,可以通过添加下面的代码实现: 1. 2. 3. Text="警告:电子邮件格式不正确!" ValidationExpression="正则表达式" ControlToValidate="TextBox1"> 4. (2)利用图形化操作。在工具箱的“验证”选项卡中,将拖放到页面中(或者直接双击)便可在页面上添加一个RegularExpressionValidator对象。 3.常用属性 RegularExpressionValidator常用的属性如图6.11所示。 ControlToValidate ValidationExpression ErrorMessage 图6.11 RegularExpressionValidator常用成员 其中: ValidationExpression:用于验证的正则表达式。 其余属性均与CompareValidate相同,不再赘述。 另外,使用RegularExpressionValidator时,如果与其结合使用的输入控件为空,则验证将成功。 4.示例:验证电子邮件格式 本小节实现的示例效果如图6.12所示,当用户在文本框中输入信息不符合一个电子邮件的合法格式时,页面会出现错误提示信息。 ·423· 图6.12 使用RegularExpressionValidator控件示例 (1)新建https://www.doczj.com/doc/ee13947383.html,网站Example_RegularExpressionValidator,在Default.aspx页面上添加1个文本框以及1个正则表达式验证控件,HTML代码如下。 代码6-6 正则表达式验证控件定义:Default.aspx 1. 2. id ="TextBox1" runat="server"> 3. id ="RegularExpressionValidator1" runat="server" 4. Text ="警告:电子邮件格式不正确!" 5. ControlToValidate ="TextBox1" 6. ValidationExpression ="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> 7. 8. div > (2)对于正则表达式的构造,本例有一个简单的方法。RegularExpressionValidator本身提供了一个正则表达式编辑器以及一些常用的正则表达式。在设计视图中单击其ValidationExpression属性后面的“”按钮,便可以使用编辑器,如图6.13所示。 图6.13 RegularExpressionValidator内置的正则表达式编辑器 要构建一个电子邮件地址正则表达式,直接利用编辑器中内置的该项即可。 (3)按【Ctrl+F5】键运行程序,结果如图6.13所示。 6.1.5 自定验证控件CustomValidator 同本节前几部分介绍的验证控件不同,自定义验证控件CustomValidator控件为用户的输入提供自定义的验证方法具有更高的灵活性。 1.创建CustomValidator对象 有两种方式在页面上添加一个CustomValidator对象: (1)在页面的源视图中,通过添加代码实现。例如要添加ID为“CustomValidator1”的CustomValidator对象,并指定与其结合使用的输入控件为TextBox1,可以通过添加下面 ·424·的代码实现: 1. 2. Text = "警告:输入发生错误!" 3. ControlToValidate = "TextBox1" > 4. (2)利用图形化操作。在工具箱的“验证”选项卡中,将 拖放到页面中(或者直接双击),便可在页面上添加一个CustomValidator 对象。 2.常用属性和事件 CustomValidator 常用的属性如图6.14所示。 ErrorMessage ControlToValidate ServerValidate 图6.14 CustomValidator 常用成员 其中, 各个属性均同前面几个验证控件功能相同。 ServerValidate :当用户向服务器提交信息时,就会触发这个事件,以实现特定的验 证方法。它具有2个参数source 和args ,其中args 为ControlToValidate 属性所指定的待验证控件。 同样,使用CustomValidator 时,如果与其结合使用的输入控件为空,则验证将成功。 3.示例1:验证文本框内容长度 本小节实现的示例效果如图6.15所示,当用户在文本框中输入的数据长度不是18位时,页面会出现错误提示信息。 图6.15 用自定义验证控件验证文本框内容长度 (1)新建https://www.doczj.com/doc/ee13947383.html, 网站Example_CustomValidator ,在Default.aspx 页面上添加1个文本框以及1个自定义验证控件,HTML 代码如下: 代码6-7 验证文本框示例:Default.aspx 1. ·425·2. "server"> 3. 4. 5. Text = "警告:证件号码长度错误!" 6. ControlToValidate ="TextBox1"> 7. 9. 10. Text ="提交"> 11. 12. (2)在设计视图中双击验证控件CustomValidator1,为其自动生成验证事件函数,然后实现自定义的验证: 代码6-8 验证文本框示例:Default.aspx.cs 1. /// CustomValidator1的验证事件:验证文本框TextBox1内的输入长度 2. private void CustomValidator1_ServerValidate 3. (object source, System.Web.UI.WebControls.ServerValidateEventArgs args) 4. { 5. try 6. { 7. if(args.Value.Length == 18) //判断用户的输入是否为18位 8. args.IsValid = true; //如果为18位,则自定义验证控件验证成功 9. else //否则 10. args.IsValid = false; //验证失败 11. } 12. catch 13. { 14. args.IsValid = false; //发生异常时,验证失败 15. } 16. } CustomValidator1的ControlToValidate 属性指定为TextBox1,因此验证事件中参数args 中的值即为TextBox1中的内容。代码在第7行判断其中的值是否为18位,如果是,则利 ·426·用arg.IsValid 指示验证成功。 (3)按【Ctrl +F5】键运行程序,结果如图6.15所示。 3.示例2:验证单选框是否选中 本小节实现的示例效果如图6.16所示,当用户没有选中“同意”单选框,单击“提交” 按钮后,页面会出现错误提示信息。 图6.16 用自定义验证控件验证单选框是否选中 (1)在【示例1】的基础上,在Default.aspx 页面上增加1个自定义验证控件和2个单选框,控件的属性如下: 代码6-9 验证单选框示例:Default.aspx.cs 1. "RadioButtonAccept" runat="server" 2. Text = "同意" 3. GroupName = "Group1" 4. Checked = "True"> 5. 6. 7. 8. Text = "不同意" 9. GroupName ="Group1"> 10. 11. 12. "CustomValidator2" runat="server" 13. Text ="警告:你需要同意系统声明!"> 14. (2)在设计视图中双击验证控件CustomValidator2,为其自动生成验证事件函数,然后实现自定义的验证: ·427· 代码6-10 验证单选框示例:Default.aspx.cs 1. /// CustomValidator2的验证事件:验证是否在复选框内选择同意 2. private void CustomValidator2_ServerValidate 3. (object source, System.Web.UI.WebControls.ServerValidateEventArgs args) 4. { 5. try 6. { 7. if(RadioButtonAccept.Checked) //判断用户选择了“同意” 8. args.IsValid =true; //则自定义验证控件验证成功 9. else //否则 10. args.IsValid = false; //验证失败 11. } 12. catch 13. { 14. args.IsValid =false; //发生异常时,验证失败 15. } 16. } 与【示例1】不同的是,CustomValidator2并没有通过ControlToValidate 属性指定所要验证的控件,因此代码第7行不能使用args 参数来获取用户的输入,而只能通过引用控件来实现。 (3)使用【Ctrl +F5】运行程序。 6.1.6 验证摘要控件ValidationSummary 在前面5个小节中,每一个验证控件所给出的错误信息,都出现在验证控件的位置。除此之外,还有另外一种方式显示这些信息,即错误信息出现在页面的另一个位置,或者出现在一个弹出的对话框中。这可以通过验证摘要控件ValidationSummary ,结合前面介绍的5个验证控件的ErrorMessage 属性来实现。 1.创建ValidationSummary 对象 有两种方式在页面上添加一个RegularExpressionValidator 对象: (1)在页面的源视图中,通过添加代码实现。如添加ID 为“ValidationSummary1”的ValidationSummary 对象,可以通过添加下面的代码实现: 1. 2. ·428·3. (2 )利用图形化操作。在工具箱的“验证”选项卡中,将 拖放到页面中(或者直接双击)便可在页面上添加一个ValidationSummary 对象。 2.常用属性 ValidationSummary 常用的属性如图6.17所示。 EnableClientScript ShowSummary ShowMessageBox DisplayMode 图6.17 ValidationSummary 常用属性 其中, DisplayMode :设置错误信息的格式,取值为ValidationSummaryDisplayMode 枚举值,包括: BulletList :显示在项目符号列表中的验证摘要。 List :显示在列表中的验证摘要。 SingleParagraph :显示在单个段落内的验证摘要。 ShowMessageBox :获取或设置一个值,该值指示是否在消息框中显示验证摘要。 如果在消息框中显示验证摘要,则为true ;否则为false 。默认为false 。另外,如果 EnableClientScript 设置为false ,则该属性无效。 ShowSummary :获取或设置一个值,该值指示是否内联显示验证摘要,即在验证控 件所在的位置显示。如果内联显示验证摘要,则为true ;否则为false 。默认为true 。 3.示例 本小节实现的示例结合【9.2.1】和【9.2.2】节的示例,效果如图6.18所示。当用户没有填写姓名信息,并且年龄信息数据格式错误,并单击“提交”按钮时,页面会在3个地方: 验证控件所在位置。 ValidationSummary 控件所在位置。 弹出对话框。 出现错误提示信息。 ·429 · 图6.18 使用ValidationSummary控件示例 (1)新建https://www.doczj.com/doc/ee13947383.html,网站Example_ValidationSummary,在Default.aspx页面上添加【9.2.1】和【9.2.2】节的服务器控件,以及一个ValidationSummary控件,HTML代码如下。 代码6-11 页面控件定义:Default.aspx 1. 2. 姓名: 3. Text="警告:请填写姓名信息!" ErrorMessage="姓名信息不能为空!" ControlToValidate="TextBox1"> 4. 5. 6. 年龄: 7. Operator="DataTypeCheck" Text="警告:输入格式错误!" ErrorMessage="年龄信息数据类型错误!" ControlToValidate="TextBox2" Type="Integer"> 8. 9. 10. 11. ShowMessageBox="true" /> 12. ·430· 6.3 注册页面示例 本节前面的各个部分,利用不同的验证控件完成了一系列的用户输入验证功能,把各个部分的功能结合在一起,便完成了完整的一个用户注册页面验证,如图6.19所示。 图6.19 使用验证控件实现的注册页面 (1)新建https://www.doczj.com/doc/ee13947383.html,网站ValidateRegister,在Default.aspx页面上添加以下标准服务器控件和验证控件,代码如下。 代码6-12 注册页面上的验证控件:Default.aspx 1. 2. 3. | 4. | | 5. | | | 6. | | 7. | | 8. | | | 9. | | 10. | | | 11. | | | Text="警告:必填" ErrorMessage="用户名必填!" 12. | | | ControlToValidate="TextBoxName"> ·431· 13. | | | 14. | | 15. | 16. | 17. | | 18. | | | 19. | | 20. | | 21. | | | 22. | | | 23. | | 24. | | 25. | | | 26. | | | Text="警告:必填!" ErrorMessage="密码必填!" 27. | | | ControlToValidate="TextBoxPwd"> 28. | | | 29. | | 30. | 31. | 32. | | 33. | | | 34. | | 35. | | 36. | | | 37. | | | 38. | | 39. | | 40. | | | 41. | | | Text="警告:必填!" ErrorMessage="重复密码必填!" 42. | | | ControlToValidate="TextBoxPwd2"> 43. | | | 44. | | | ·432· 45. | | | 46. | | | Text="警告:输入不一致!" ErrorMessage="密码输入不一致!" 47. | | | ControlToCompare="TextBoxPwd" ControlToValidate="TextBoxPwd2"> 48. | | | 49. | 50. | 51. | | 52. | | | 53. | | 54. | | | 55. | | 56. | | | 57. | | | Text="警告:输入不合法!" ErrorMessage="年龄输入不合法!" 58. | | | MinimumValue="0" MaximumValue="100" 59. | | | Type="Integer" ControlToValidate="TextBoxAge"> 60. | | | 61. | 62. | 63. | | 64. | | | 65. | | 66. | | | 67. | | 68. | | | 69. | | | Text="警告:输入不合法!" ErrorMessage="电子邮件输入不合法!" 70. | | | ControlToValidate="TextBoxEmail" 71. | | | ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"> 72. | | | 73. | 74. | 75. | | 76. | | | 在WebForm1页面上直接放置用户控件WebUserControl1时的事件顺序:WebUserControl1_Init WebForm1_Init Page_Load WebUserControl1_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl1_Unload WebForm1_Unload 在WebForm1页面的OnInit方法中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init: OnInit WebForm1: Loading controls WebUserControl1_Init : OnInit WebForm1: added to Controls WebForm1: LoadViewState WebUserControl1: LoadViewState WebUserControl1: LoadPostData Begin WebUserControl1: LoadPostData End WebForm1_PageLoad: OnLoad after base's Onload. WebUserControl1_Load: after base's OnLoad iWebUserControl1: RaisePostDataChange WebForm1: OnPreRender WebUserControl1: OnPreRender WebForm1: SavedViewState WebUserControl1: SaveViewState 在WebForm1页面的Page_Load方法中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init : OnInit WebForm1: LoadViewState WebForm1_PageLoad: OnLoad after base's Onload. WebForm1: Loading controls WebUserControl1_Init : OnInit WebUserControl1: LoadViewState WebForm1: added to Controls WebUserControl1_Load: after base's OnLoad WebUserControl1: LoadPostData Begin WebUserControl1: LoadPostData End iWebUserControl1: RaisePostDataChange WebForm1: OnPreRender WebUserControl1: OnPreRender WebForm1: SavedViewState WebUserControl1: SaveViewState 在WebForm1页面的Button1_Click事件中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init Page_Load Button1_Click WebUserControl1_Init WebUserControl1_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl1_Unload WebForm1_Unload 在WebForm1页面的Page_Load事件中用代码Load用户控件WebUserControl1,WebUserControl1又在Page_Load事件中用代码Load用户控件WebUserControl2时的事件顺序:WebForm1_Init Page_Load WebUserControl1_Init WebUserControl1_Load WebUserControl2_Init WebUserControl2_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl2_PreRender WebUserControl2_Unload WebUserControl1_Unload WebForm1_Unload 实验编号:02 四川师大Web程序设计实验报告 2015年12月26日 计算机科学学院级 4 班实验名称https://www.doczj.com/doc/ee13947383.html,验证控件 姓名:沙夫都学号:2013110431 指导老师:徐勇实验成绩: 97 实验二https://www.doczj.com/doc/ee13947383.html,验证控件 一.实验目的及要求 使用https://www.doczj.com/doc/ee13947383.html,验证控件制作一个简单的用户注册页面。 二.实验内容 1.使用https://www.doczj.com/doc/ee13947383.html,验证控件制作一个简单的用户注册页面。 2.注册页面中有用户名、密码、重复密码、年龄、电子邮件等必填项。其中密码需要二次 验证,年龄范围在1~100之间,电子邮件符合规范。 三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页) <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> 表单操作题 1 设计一个名为Frm01的表单,表单的控件名和文件名均为Frm01。表单的形式如下图所示。要求如下: 1. 表单标题为"零件供应情况",表格控件为Grid1,命令按钮"查询"为Command1、"退出"为Command2,标签控件Label1 和文本框控件Text1(程序运行时用于输入工程号)。 2. 运行表单时,在文本框中输入工程号,单击"查询"命令按钮后,表格控件中显示相应工程所使用的零件的零件名、颜色和重量(通过设置有关"数据"属性实现),并将结果按"零件名"升序排序存储到pp.dbf文件。 单击"退出"按钮关闭表单。 答题要求: (1)将表格的recordsourcetype属性设为“0” (2)查询的单击事件: 使用select语句,将查询结果存到一个表pp.dbf中,然后再将表格grid1的recordsource属性设为"pp" (3)表单备注文件不能删除 查询按钮代码: SELECT 零件.零件名, 零件.颜色, 零件.重量; FROM 供应零件!供应INNER JOIN 供应零件!零件; ON 供应.零件号= 零件.零件号; WHERE 供应.工程号= thisform.text1.value; ORDER BY 零件.零件名; INTO TABLE pp.dbf thisform.grid1.recordsource=null &&这句话可以删除 thisform.grid1.recordsource="pp" thisform.grid1.refresh thisform.refresh 3 求1到100以内的奇数,单击"计算"按钮后,首先清除列表框中原先的内容,然后显示结果,单击"退出"按钮后退出表单。表单文件名为Frm03.scx。 要求: 1.窗体命名为frm03.scx(表单备注文件不能删除) 2.窗体的标题为:求100以内的奇数 3.命令按钮"计算"(名称为command1),"退出"(名称为command2) 4.列表框名称为list1 5.判断一个数是否为奇数使用语句“i%2<>0”,即i除2不等于0 6.列表框中增加一项使用语句“additem(str(i))” 7.要求使用for循环语句 8.退出表单用release语句 计算按钮的代码: thisform.list1.clear 1.能够连接“层次化数据”的数据源控件是()。 A.SqlDataSource控件和XmlDataSource控件 B.SiteMapDataSource控件和LinqDataSource控件 C.SiteMapDataSource控件和XmlDataSource控 件 D.SqlDataSource控件和LinqDataSource控件 【参考答案】: C 2.APP_Code文件夹用来存储()。 A.数据库文件 B.资源文件 C.自定义类文件 D.主题文件 【参考答案】: C 3.下面不是HttpResponse对象的方法是()。 A.Write() B.Redirect() C.Cookie() D.Clear() 【参考答案】: C 4.下面关于用户控件的说法错误的是()。 A.一个用户控件不能在同一个网页中多次使用 B.用户控件支持可视化开 发 C.可以将已有的aspx文件更改为ascx文件 D.在每个使用用户控件的Web应用程序中,都必须保存一个该控件的副本 【参考答案】: A 5.可以使用属性()禁用主题。 A.EnabledTheme B.EnableThemes C.EnableTheming D.EnabledTheme s 【参考答案】: C 6.GridView控件要实现分页功能需要设置属性()值为True。 A.AllowPages B.AllowPaged C.AllowPaging D.AllowPage 【参考答案】: C 7.HttpRequest对象的()数据集合用于从查询字符串中读取用户提 交的数据。 A.QueryString B.Browser C.ServerVariables D.ClientCertificat e 【参考答案】: A 8.创建一个Cookie的正确代码()。 A.Response.Cookies["userName"]="apple" B.Cookies["userName"]="appl e" C.Cookies["userName"].Value="apple" D.Response.Cookies["user Name"].Value="apple" 【参考答案】: D 9.使用存储过程可以()。 A.提高数据库安全性 B.加快执行速度 C.降低网络通信量 D.使分工更复杂 【参考答案】: D 10.下面关于状态管理的说法错误的是()。 A.客户端状态管理将信息保留在客户端计算机上 B.服务器端状态管理将信息保留在服务器上 C.Web 窗体页是有状态的 D.状态管理可以对同一页或不同页的多个请求维护状态和页信息 【参考答案】: C 11.下面关于存储过程的说法错误的是()。 A.公共数据存储过程可以被多个 Web 应用程序调用 B.存储过程被解释执行 C.一个存储过程可以执行上百条 SQL 语句 D.存储过程或数据库结构的更改不会影响 Web 应用程序 【参考答案】: B 第10章验证控件 RequiredFieldDemo.aspx页面: 用户控件事件执行顺序
实验2. ASPNet验证控件
用户注册 用户名: vf题库 表单 操作题讲解..
北理工20年春季《https://www.doczj.com/doc/ee13947383.html,开发技术》在线作业_2.doc
验证控件和正则表达式