15 高级验证控件

  • RegularExpressionValidator:  ValidationExpression属性为正则表达式,VS已内置了几个正则表达式,也可以自己写。
  • CustomValidator:自定义验证控件。当ASP.Net内置的验证控件无法满足要求的时候可以使用CustomValidator.
  1. CustomValidator有特别重要的属性或事件,一个是服务端验证事件,即它的ServerValidate;如果要在客户端验证,则它的属性为ClientValidationFunction,给此属性指定一个写好的函数名即可。
  2. ClientValidationFunction属性的函数的参数和ServerValidate事件是一样的,只是客户端的这个函数写在客户端的js中。否则只做服务端验证。
  3. 事件中有两个参数,一个为Source,是事件来源;另个参数为args,此参数会把用户输入的值传到args.value。如果args.isValid设置为True,则通过校验,否则不会通过。

实例:

     1)验证一个邮箱格式是否正确。

      2)输入一个5-10位的数值

     3)输入一个值必须为1.

      4) 以上的都要输入值

    以上所述,前两个主要用到RegularExpressionValidator,设置它的ValidationExpression.第3个用到了CustomValidator验证控件,设定它的服务和客户端验证即可。当然也需要加上RequiredFieldValidator.

aspx:

 

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function customerValidator(source, args) {
            args.IsValid = (args.Value == "1"); //与服务端参数等是一样的
      };
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        邮箱:&nbsp;&nbsp;&nbsp; 
        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
            ControlToValidate="txtEmail" ErrorMessage="邮箱格式不正确" 
            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
            ControlToValidate="txtEmail" ErrorMessage="email不能为空"></asp:RequiredFieldValidator>
        <br />
        输入5-10位数值<asp:TextBox ID="txtint" runat="server"></asp:TextBox>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" 
            ControlToValidate="txtint" ErrorMessage="请输入数值5-10位" 
            ValidationExpression="\d{5,10}"></asp:RegularExpressionValidator>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
            ControlToValidate="txtint" ErrorMessage="数值不能为空"></asp:RequiredFieldValidator>
        <br />
        <br />
        <br />
        必须设定值为1&nbsp;&nbsp;
        <asp:TextBox ID="txtmust" runat="server"></asp:TextBox>
        <asp:CustomValidator ID="CustomValidator1" runat="server" 
            ControlToValidate="txtmust" ErrorMessage="输入的值必须为1" 
            onservervalidate="CustomValidator1_ServerValidate" ClientValidationFunction="customerValidator" 
            ></asp:CustomValidator>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
            ControlToValidate="txtmust" ErrorMessage="值不能为空"></asp:RequiredFieldValidator>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    
    </div>
    </form>
</body>
</html>

cs:

  protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
        {
           
            Response.Write("你输入的值为: "+args.Value);
            args.IsValid = (args.Value == "1");
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (!IsValid)
                return;
            Response.Write("已提交");
        }

 

posted on 2013-06-10 09:40  天上星  阅读(289)  评论(0编辑  收藏  举报

导航