教你只用一个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注入漏洞检测。

posted @   麒麟  阅读(3423)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示