西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → 教你只用一个Validator对多个控件进行验证

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

相关软件相关文章发表评论 来源:博客园时间:2010/3/16 17:32:49字体大小:A-A+

作者:佚名点击:199次评论:0次标签: Validator

Aloaha Signator Validatorv3.9.285 官方版
  • 类型:电子阅读大小:10.1M语言:中文 评分:5.0
  • 标签:
立即下载

 

这个技巧是非常有用。如果我们有多个控件,我们只用一个验证控件来验证它 。这将减少页面大小和改善性能,因为每个验证控件在客户端都会被渲染成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函数也可以扩展等等。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)