网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

创建具有自验证功能的textbox控件

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13

    导言
   
    在强大的.NET面前,我有很多的想法,我希望asp.net的web控件内建有验证功能,而不需要在页面中插入太多的验证控件以致代码混乱!现在我们将可以利用.NET来创建一个只允许输入整型数字的的textbox控件或只允许输入货币型数据的textbox控件,等等。当然了,你还可以特别指定textbox控件可否为空或者是否在一个范围内,等等,另外,当我们输入的数据符合要求时,还可以返回一个值,以方便我们觉得是否要干预,甚至我们可以让它运行的时候根据输入数据是否符合要求呈现不同的颜色
   
    经过一番努力,我终于实现以上的想法
   
    实现IValidator接口
   
    我在钻研SDK文档时发现,只要实现了IValidator接口,任何的控件都可以具有验证功能,以下是一个继承textbox控件的简单的例子:
using System;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace MyValidatingControls {
   public class TextBox : System.Web.UI.WebControls.TextBox, IValidator {
      private bool _valid = true;
      private string _errorMessage = "";

      public bool IsValid {
         get { return _valid; }
         set { _valid = value; }
      }

      public string ErrorMessage {
         get { return _errorMessage; }
         set { _errorMessage = value; }
      }

      public void Validate() {
      }
   }
}
    当然了,这段程序什么都不做,但是它完全实现了基本的IValidator接口的架构(至少它是可以成功编译的),我使用Private关键字创建两个字段(field)用来保存验证状态和错误信息,为了确保验证控件能被执行,我们必须把我们的验证控件添加到页面中的验证控件集合中来。
   
    我在阅读SDK文档的时候发现,验证控件是在初始化期间加载他们本身的,IValidators接口主要用来注册他们自己,所以我们需要使用覆盖的方法重新实现OnInit和OnUnload事件,以便我们能从页面中的验证控件集合中添加或者删除它们
protected override void OnInit(EventArgs e) {
   base.OnInit(e);
   Page.Validators.Add(this);
}

protected override void OnUnload(EventArgs e) {
   if (Page != null) {
      Page.Validators.Remove(this);
   }
   base.OnUnload(e);
}

    完成设置

    在我们实现我们的验证功能之前,为了使事件更简洁,我设置了一些帮助项目,因为我不想单独分别单独提供验证控件的错误信息,而是希望把他们嵌入到控件中来,以实现我们所期望格式的数据录入,因此,我需要做一些事情,使它可以适当的出现错误提示。
   
    我将添加一个叫做FriendlyName属性,它将在所有的错误提示信息中出现以提示用户合法的数据类型,所以,如果我们调用的控件ID是RetailPrice,我们将使该控件的riendlyName为Retail Price
private string _friendlyNa

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号