前一段使用了AjaxControlToolKit中的ValidatorCallout控件.使用当中感觉极其不爽!!!

首先,它这个控件只适用于Asp.net的服务器端校验控件,而服务器端校验控件只能对TextBox控件进行校验,<Input>控件无法使用.

最让我无法忍受的是,其中的客户端自定义校验,无法在异步调用Webservice后的回调函数中,无法设置校验状态.造成ValidatorCallout无法正常使用.

后来看了ValidatorCallout的源代码,准备自己写一个类似的控件来满足上述的需要.

经过一段时间的努力,终于写好了,也没有经过完整的测试.望各位走过路过的老大帮忙看看,多提宝贵意见,(扔臭鸡蛋也可!!!).总之希望是抛砖引玉,让各位能够在Asp.net Ajax的学习中共同进步!!!

下面将着重讲解几个步骤,来加入这个控件:

加入控件有几种方法:

一 使用DLL

1.新建一个网站,在新建网站对话框的”我的模版”中选择Ajax Control Toolkit Web Site.

2.在”解决方案资源管理器”中的网站上点击鼠标右键,选择”添加引用”,然后在弹出的对话框中选择”浏览”标签,然后选择下载的DLL文件.

3.将下列代码加入到Default.Aspx中,按F5运行,查看演示效果:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="TextBoxValid" Namespace="TextBoxValid" TagPrefix="Panda" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>自制校验Extender演示</title>
    <style type="text/css">
        .highlight 
        {}{
            background-color: lemonchiffon; 
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <p>测试控件一:必须在文本框控件中输入内容</p><asp:TextBox ID="text1" runat="server"></asp:TextBox>
        </div>
        <div>
            <p>测试控件二:文本框控件必须输入内容而且内容必须符合指定的正则式(双重校验)格式为:(###) ###-####</p><input type="text" id="text2" runat="server" />
        </div>
        <div>
            <p>测试控件三:您可以自己书写客户端校验函数</p><asp:TextBox ID="text3" runat="server"></asp:TextBox>
        </div>
        <Panda:TextBoxValidExtender HighlightCssClass="highlight" ID="Tbve1" TargetControlID="text1" RequiredFieldValidator="true" RequiredFieldValidatorErrorMessage="<b>控件缺少内容</b><br />您总的在这里写点什么吧!!!" runat="server"></Panda:TextBoxValidExtender>
        <Panda:TextBoxValidExtender ID="Tbve2" runat="server" TargetControlID="text2" HighlightCssClass="highlight" RequiredFieldValidator="true" RequiredFieldValidatorErrorMessage="<b>控件缺少内容</b><br />您总的在这里写点什么吧!!!" RegularExpressionValidator="true" ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}" ValidationExpressionErrorMessage="<b>电话号码格式不对</b><br />格式为(###) ###-####" ></Panda:TextBoxValidExtender>
        <Panda:TextBoxValidExtender ID="Tbve3" HighlightCssClass="highlight" TargetControlID="text3" RequiredFieldValidator="true" RequiredFieldValidatorErrorMessage="<b>控件缺少内容</b><br />您总的在这里写点什么吧!!!" CustomValidator="true" CustomValidatorHandle="testone" runat="server"></Panda:TextBoxValidExtender>
    </form>
    <script language="javascript" type="text/javascript">
        var currentControl;
        var control;
        function testone( Control )
        {
            control = Control;
            currentControl = Control._currentControl;
            if(currentControl.value != "panda write")
                Control.BackCall( currentControl, false,"<b>输入的内容不对</b><br />请您输入'panda write'");
            else
                Control.BackCall( currentControl, true,"");
        }
    </script>    
</body>
</html>

请大家注意这里:

<%@ Register Assembly="TextBoxValid" Namespace="TextBoxValid" TagPrefix="Panda" %>

这是将Dll注册进程序中

二 从源代码开始创建

1.创建测试网站:

参照上面的创建网站的步骤来创建测试网站

2.在”解决方案资源管理器”中的解决方案上点击鼠标右键,选择”添加”->”新建项目”.

3.选择C#,然后在我的模版中选择”Asp.net Ajax Control Project”

4.Vs.net2005将会在网站目录下创建项目文件夹,其中包含如下文件:

TextBoxValidBehavior.js

TextBoxValidDesigner.cs

TextBoxValidExtender.cs

然后将我的源码文件中的TextBoxValidBehavior.js, TextBoxValidExtender.cs文件中的内容粘贴到对应的文件中. TextBoxValidDesigner.cs不应被修改.

5.在控件项目上点击鼠标右键,选择”添加”->”现有项目”,然后选择图象文件,从Demo文件夹中选择那三个图象文件.

添加成功后,依次点击,然后在”属性”窗口的”生成操作”项目中选择”嵌入的资源”.

6.点击”生成”菜单中选择”重新生成XXXXX”控件.

7.生成完毕后,在测试网站上点击鼠标右键,选择”添加引用”,选择”浏览标签”,然后选择Bin目录下生成的Dll文件,完成引用.

按F5运行测试网站,检查效果.

控件现在只实现了三个检查功能,分别是,”控件非空”,”正则表达式”,”用户自定义”.

下面分别介绍使用方法:

使用Exetender控件的大致方法大家都会使用,就不再过多描述了,下面首先介绍通用的参数:

HighlightCssClass="highlight" HighlightCssClass参数为校验失败后,控件所要呈现的背景颜色."highlight"是Css类名,请大家参阅Default.aspx文件中的<style>标签.

TargetControlID="text1": TargetControlID是目标控件,既是要检测的文本框,文本框可以是<Asp:TextBox >,也可以是<input type=”text” runat=”server”>.请注意,<input>标签一定要加上,runat=“server”,否则无法正常使用.

控件非空:

RequiredFieldValidator="true"

校验控制参数:true为进行校验,false为不进行校验.

RequiredFieldValidatorErrorMessage="<b>控件缺少内容</b><br />您总的在这里写点什么吧!!!"

控件内容为空时,显示的错误提示信息.

正则表达式校验:

RegularExpressionValidator="true"

校验控制参数:true为进行校验,false为不进行校验.

ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"

正则表达式校验所需的正则表达式.

ValidationExpressionErrorMessage="<b>电话号码格式不对</b><br />格式为(###) ###-####"

控件内容校验错误时,显示的错误提示信息.

用户自定义校验:

CustomValidator="true"

校验控制参数:true为进行校验,false为不进行校验.

CustomValidatorHandle="testone"

自定义校验调用的校验javascript函数.

需要特别讲解的是:用户自定义校验

我们的自定义校验函数的格式为:

Function jiaoyan( Control )

{

control = Control;

currentControl = Control._currentControl;

if(currentControl.value != "panda write")

Control.BackCall( currentControl, false,"<b>输入的内容不对</b><br />请您输入'panda write'");

else

Control.BackCall( currentControl, true,"");

}

Control为传递进来的校验控件对象.我们需要它来传递一些参数和调用方法.

Control._currentControl为传递进来的被校验控件的对象,我们需要检查的内容.

Control.BackCall为校验完成时调用的回调控制函数.

这个函数的三个参数的定义为:

第一个为传递进来的被校验控件的对象

第二个为校验的结果,true为正确,false为错误

第三个参数为校验错误时的错误提示信息

介绍就写道这里了,第一次写这么长的技术文章,罗里把所的,希望给予指正.谢谢啊!!!

DLL文件下载:编译好的DLL文件
全部的演示文件:全部演示及源码文件

转载于:https://www.cnblogs.com/panda/archive/2006/11/23/570367.html

抛砖引玉,终于完成了自己的客户端校验提示Extender相关推荐

  1. 准备创建一个自己的校验提示Extender

    前一段时间,在学习使用<Ajaxtoolkit:ValidatorCalloutExtender>的过程当中,对这个控件的感觉是又爱又恨!!! 爱的是,它的错误提示功能真的很眩,在浏览器上 ...

  2. JEECG 3.7.8 新版表单校验提示风格使用升级方法(validform 新风格漂亮,布局简单)

    JEECG 表单校验新提示风格使用讲解&升级方法 (validform 新风格漂亮,布局简单) JEECG 表单校验采用的是validform,默认的校验提示需要占用页面布局,提示效果较传统. ...

  3. 用友修改了变量不能连接到服务器,用友T3客户端登录提示 运行时错误91:未设置对象变量...

    近日使用的用友T3财务软件的T3中碰到一个问题: T3客户端登录提示 运行时错误91:未设置对象变量或with block 变量 详细的问题情况是这样的: T3客户端登录提示 运行时错误91:未设置对 ...

  4. 登录金蝶客户端,提示:无法创建账套检测部件,系统将无法检测你的账套是否完整

    登录金蝶客户端,提示:无法创建账套检测部件,系统将无法检测你的账套是否完整 一.解决方案:必须将金蝶K3账套管理设置的SQL服务器的身份验证方式更改为"windows和SQL server混 ...

  5. iOS客户端校验https网络请求证书

    其实iOS系统的网络请求都有校验,比如NSURLConnection.NSURLSession都有系统的自动校验.具体的校验可进行百度 我使用的是NSURLConnection进行的网络请求,NSUR ...

  6. HTML5新增的客户端校验

    1.使用校验属性执行校验 required:该属性指定该表单控件必需填写. pattern:该属性指定该表单控件的值必需符合指定的正则表达式. min.max.step:这3个属性值对数值类型.日期类 ...

  7. 腾讯终于出官方的QQ客户端了

    今天进fedora突然发现amsn怎么也登不上去了,有点奇怪,这个东西一直用着挺爽的,就是汉化做的不是很好,今天突然登不上去了,那就用QQ吧,没想到原来用的好好的LUMAQQ也不好使了,刚登陆就报版本 ...

  8. Coolite 常用客户端校验

    客户帐号不能为空: <Listeners> <Click Handler=" if(!#{txtNetUserName}.validate()) { Ext.Msg.ale ...

  9. 客户端登录提示找不到表0

    问题描述:服务端搭建完成后,通过IE访问一切正常,但是客户端登录时提示:服务器无法处理请求.--无法找到表0. 图例: 分析原因:可能是没有连接到服务器,服务器IIS配置文件不正确,ORCL 11G  ...

最新文章

  1. 第十章—DOM(0)—NODE类型
  2. 【安装】Linux系统(X64)安装Oracle 11g
  3. Android获取有线和无线(wifi)的IP地址
  4. http:(4):http请求方法
  5. 便把他手中的i698源代码拐杖转了一圈
  6. LeetCode 36. Valid Sudoku
  7. Android Performance之开机优化(1)-开机启动优化工具
  8. Spring Boot入门教程(三十八):支付宝集成-电脑网站支付和查询对账单下载地址
  9. 最值得拥有的免费Bootstrap后台管理模板
  10. lzg_ad:FBW控制台命令详解
  11. 无情刀永不知错,无缘分只叹奈何
  12. 多路人脸识别解决方案
  13. AltiumDesigner的常用设计总结
  14. PackagesNotFoundError Anaconda虚拟环境安装包下载
  15. poj3179 : corral the cows-离散化的巧妙运用
  16. __attribute__((used)) __attribute__((section(x)))
  17. vue:$emit失效
  18. 7-18 银行业务队列简单模拟
  19. 通关必读—linux面试题(带答案)
  20. Java连接数据库实现图书馆管理系统(详细教程)

热门文章

  1. Hadoop日志分析工具——White Elephant
  2. OSL LLVM 3.3 Related Changes
  3. Another test
  4. 批量安装Windows补丁
  5. Ranger-AdminServer安装(开启Kerberos)
  6. Java 面向对象:重写的理解
  7. Linux lvs 的固定访问
  8. Python3自定义json逐层解析器
  9. ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
  10. 解决linux删除文件后空间没有释放问题