• 教你只用一个Validator对多个控件进行验证


          这个技巧是非常有用。如果我们有多个控件,我们只用一个验证控件来验证它 。这将减少页面大小和改善性能,因为每个验证控件在客户端都会被渲染成span,如果一个页面包含上百个控件,就会使得页面非常的庞大臃肿。

         在这篇文章的Demo中,动态创建的几个textbox,我只使用一个验证控件去验证它们。

     1.aspx页面上:

    1 <body>
    2     <form id="form1" runat="server">
    3     <div>
    4         <asp:CustomValidator ID="CustomValidator1" runat="server" ></asp:CustomValidator>
    5        <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
    6     </div>
    7 
    8     </form>
    9 </body>

    2.在服务端将验证控件和TextBox的onfocus事件关联起来:

     1     protected void Page_Load(object sender, EventArgs e)
     2     {
     3         if (!IsPostBack)
     4         {
     5             for (int i = 0; i < 10; i++)
     6             { 
     7                 TextBox tb = new TextBox();
     8                 tb.ID = "tb" + i.ToString();
     9                 tb.Attributes.Add("onfocus""HookUpControl(this,'" + CustomValidator1.ClientID + "')");
    10                 Page.Form.Controls.Add(tb);
    11             }
    12         }
    13     }

    3.HookUpControl函数如下:

    1        function HookUpControl(curObj, validatorClientID) 
    2         {
    3             var validationControl = document.getElementById(validatorClientID);
    4             validationControl.controltovalidate = curObj.id;
    5             validationControl.clientvalidationfunction = "validatetextbox";
    6             validationControl.validateemptytext = "true";
    7             ValidatorHookupControl(curObj, validationControl);
    8         }

    4.客户端的验证函数如下:

     1         function validatetextbox(sender, args) 
     2         {
     3             if (args.Value == ""
     4             {
     5                 sender.errormessage = "<b>该栏位不能为空。";
     6                 sender.innerHTML = "<b>该栏位不能为空。";
     7                 args.IsValid = false;
     8                  return;
     9             }
    10             if (isNaN(args.Value)) 
    11             {
    12                 sender.errormessage = "<b>该栏位只能是数字。";
    13                 sender.innerHTML = "<b>该栏位只能是数字。";
    14                 args.IsValid = false;
    15                  return;
    16              }
    17              if (Number(args.Value) < 100) {
    18                  sender.errormessage = "<b>该栏位的值不能小于100。</b>";
    19                  sender.innerHTML = "<b>该栏位的值不能小于100。</b>";
    20                  args.IsValid = false;
    21                  return;
    22              } 
    23        }

    其实主要使用了ValidatorHookupControl(curObj, validationControl)的功能。

    在第一个TextBox中输入1,提示:该栏位的值不能小于100。

    在第二个TextBox中输入a,提示:该栏位只能是数字。

    在第三个TextBox输入值,失去焦点后,再删除,提示:该栏位不能为空。。

    onfocus事件可以换成你相应的事件,validatetextbox函数也可以扩展等等。

    Code:/Files/zhuqil/WebSite1.zip



    (全文完)


    以下为广告部分

    您部署的HTTPS网站安全吗?

    如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

    SSL检测评估

    快速了解HTTPS网站安全情况。

    安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

    SSL证书工具

    安装部署SSL证书变得更方便。

    SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

    SSL漏洞检测

    让服务器远离SSL证书漏洞侵扰

    TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

    作者:朱祁林 出处:http://zhuqil.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。  
  • 相关阅读:
    2017.6.30 码云--生成公钥
    2017.6.30 IDEA插件--gsonfomat的安装与使用
    2017.6.30 安装IDEA的插件mybatis plugin(破解版)
    2017.6.29 java读取.properties配置文件的几种方法
    2017.6.29 移除再导入maven module到IDEA中时提示: Unable to proceed. Nothing found to import.
    2017.6.27 跟开涛学spring3--spring概述
    2017.6.27 jdbc基本使用
    2017.6.26 接口测试工具postman使用总结
    16-20
    11-15
  • 原文地址:https://www.cnblogs.com/zhuqil/p/Validator.html
Copyright © 2020-2023  润新知