15 高级验证控件
- RegularExpressionValidator: ValidationExpression属性为正则表达式,VS已内置了几个正则表达式,也可以自己写。
- CustomValidator:自定义验证控件。当ASP.Net内置的验证控件无法满足要求的时候可以使用CustomValidator.
- CustomValidator有特别重要的属性或事件,一个是服务端验证事件,即它的ServerValidate;如果要在客户端验证,则它的属性为ClientValidationFunction,给此属性指定一个写好的函数名即可。
- ClientValidationFunction属性的函数的参数和ServerValidate事件是一样的,只是客户端的这个函数写在客户端的js中。否则只做服务端验证。
- 事件中有两个参数,一个为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> 邮箱: <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 <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("已提交"); }