知识大全 ASP.NET 2.0服务器控件之验证控件示例

Posted

篇首语:最关情,折尽梅花,难寄相思。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 2.0服务器控件之验证控件示例相关的知识,希望对你有一定的参考价值。

ASP.NET 2.0服务器控件之验证控件示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在上一篇文章中 我们讲解了有关实现验证控件的一些知识 那些内容将为开发人员实现验证控件奠定一定基础 为了帮助读者更好的理解验证控件的实现方法 本文将首先介绍常见验证控件的实现步骤 然后 通过一个典型示例说明验证控件的实现方法         验证控件实现步骤        在创建验证控件过程中 需要实现服务器端验证和客户端验证等核心内容 下面列举了验证控件的常见实现步骤        ( )验证控件类应由BaseValidator基类继承 这样可使验证控件自动继承参与验证框架所需要的功能 例如 通过继承BaseValidator的ControlToValidate属性 实现验证控件与验证目标控件的关联        ( )实现验证控件所特有的一些属性 开发人员可根据应用需求 从方便实用的角度出发定义这些特有属性        ( )重写AddAttributesToRender方法 将特有属性及相关内容添加到控件呈现中 当实现客户端验证代码时可能需要引用相关呈现内容        ( )重写EvaluateIsValid方法 为验证控件添加服务器端验证逻辑        ( )重写PreRender事件的事件处理方法OnPreRender 除调用基类实现方法外 还要实现对客户端验证脚本文件的注册        ( )编写与验证控件一起打包的客户端验证脚本文件 并且将其放置到正确的目录中        通过以上的一个或者几个步骤 开发人员就可以实现一个基本的验证控件 在实现过程中 服务器端验证逻辑和客户端验证逻辑必须保持一致 否则 即使输入数据通过了客户端验证 也无法通过服务器端验证 下面将通过一个典型实例来进一步说明验证控件的实现方法 以加深读者的理解         典型应用        本节将使用上文所介绍的开发验证控件的方法 创建一个名为TelNumValidator的验证控件 该控件用于验证用户输入的电话号码是否符合规则 如果不符合规则 那么动态提示错误信息 其效果如图   

  

  图 效果图(输入错误状态下)

  如图 所示 页面中主要包括了一个TextBox文本框和一个提交按钮 用户必须输入正确格式的电话号码 才能够通过验证 图 中 由于没有输入正确的电话号码 当单击提交按钮时 则无法实现提交页面 同时 页面还分红蓝两种颜色给出了提示信息 下文详细讲解了验证控件的实现过程        首先 在实现TelNumValidator控件之前 必须进一步明确验证条件        对于国内电话号码 一般为两种模式 一种是区号为 位 电话号码为 位 另一种是区号为 位 电话号码为 位 据此 可得出用于验证的正则表达式 \\d \\d |\\d \\d 无论是服务器端验证逻辑 还是客户端验证逻辑 都必须遵从以上验证条件 只有符合这两种模式的输入数据才能够通过验证        下面列出了验证控件TelNumValidator的服务器端验证的源代码      using System;   using System Collections Generic;   using System ComponentModel;   using System Text;   using System Web;   using System Web UI;   using System Web UI WebControls;   using System Text RegularExpressions;      namespace WebControlLibrary       [DefaultProperty( Text )]    [ToolboxData( < :TelNumValidator runat=server>     </ :TelNumValidator> )    ]       public class TelNumValidator : BaseValidator         // 定义私有变量 其中_clientFileUrl表示JavaScript文件存储目录     // ValidationExpression表示正则表达式        private string _clientFileUrl = ClientFiles/ ;     private const string ValidationExpression = @ (\\d \\d |\\d \\d ) ;     // 定义属性ClientFileUrl 用于获取或设置脚本相对路径     [      Description( 获取或设置脚本相对路径 )      DefaultValue( ClientFiles/ )      Category( Appearance )     ]        public string ClientFileUrl           get       return _clientFileUrl;      set        _clientFileUrl = value;          //重写AddAttributesToRender 为验证控件添加特殊属性evaluationfunction和validationexp     protected override void AddAttributesToRender(HtmlTextWriter writer)           base AddAttributesToRender(writer);      if (RenderUplevel)             writer AddAttribute( evaluationfunction TelNumValidatorEvaluateIsValid false);       writer AddAttribute( validationexp ValidationExpression);                //重写EvaluateIsValid方法 定义服务器端验证逻辑     protected override bool EvaluateIsValid()     string controlValue = GetControlValidationValue(ControlToValidate);     if (controlValue == null)           return true;          controlValue = controlValue Trim();     try           Match m = Regex Match(controlValue ValidationExpression);      return (m Success && (m Index == ) && (m Length == controlValue Length));          catch           return false;             //重写OnPreRender方法 注册客户端脚本程序    protected override void OnPreRender(EventArgs e)         base OnPreRender(e);     if (RenderUplevel)     Page ClientScript ReGISterClientScriptBlock ( typeof(TelNumValidator)       ClientValidator GetClientFileUrl ( ClientValidator js ));                // 实现辅助函数GetClientFileUrl 用于获取JavaScript文件的完整路径       private string GetClientFileUrl(string fileName)         string tempClient = String Format( <script language=\\ javascript\\ src=\\ \\ ></script> (ClientFileUrl + fileName));     return tempClient;          

  [NextPage]

  从以上代码可知 TelNumValidator控件的实现 是按照上文说明的验证控件实现步骤编写的 该类实现了以下重要逻辑        ( )验证控件类TelNumValidator类从BaseValidator基类继承 因此 该类自动继承了通用验证控件应该具备的属性 方法和事件        ( )定义用于获取或设置脚本相对路径的属性ClientFileUrl 默认值为 ClientFiles/ 通过该属性页面开发者可自定义客户端验证脚本文件的目录 这样可增加控件的灵活性        ( )重写AddAttributesToRender方法 为控件添加特性evaluationfunction和validationexp 特性evaluationfunction对应的值是进行客户端验证的方法名 特性validationexp对应的值是用于验证的正则表达式 通过将其呈现到客户端 那么客户端验证脚本即可使用该表达式        ( )重写EvaluateIsValid方法 定义服务器端验证逻辑

  ( )重写OnPreRender方法 注册客户端脚本文件ClientValidator js

cha138/Article/program/net/201311/11616

相关参考

知识大全 ASP.NET 2.0服务器控件开发精要

ASP.NET2.0服务器控件开发精要  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用ASP

知识大全 ASP.NET 2.0高级控件之FileUpload控件

ASP.NET2.0高级控件之FileUpload控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ASP.NET 2.0服务器控件开发的基本概念

ASP.NET2.0服务器控件开发的基本概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用

知识大全 ASP.NET 2.0移动开发之列表控件

ASP.NET2.0移动开发之列表控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!概述  在很多

知识大全 ASP.NET 2.0高级数据处理之处理控件事件

ASP.NET2.0高级数据处理之处理控件事件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在前面

知识大全 探讨ASP.NET 2.0的Web控件改进之概述

探讨ASP.NET2.0的Web控件改进之概述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一引言

知识大全 ASP.NET服务器控件之视图状态

ASP.NET服务器控件之视图状态  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为Web页面及

知识大全 ASP.NET2.0服务器控件之创建复杂属性

ASP.NET2.0服务器控件之创建复杂属性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  页面

知识大全 Asp.net 2.0 自定义控件开发

Asp.net2.0自定义控件开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (一)概述  

知识大全 当Asp.Net验证控件遇到FCKeditor

当Asp.Net验证控件遇到FCKeditor  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使