webform1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="work040.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>自定义验证控件</title>
<script>
//2的倍数
function CheckEven(obj, args)
{
var numberPattern = /\d+/;
//使用正则,判断是数值型,再取余
if (!numberPattern.test(args.Value)) {
args.IsValid = false;
}
else if (args.Value % 2 == 0) {
args.IsValid = true;
}
else {
args.IsValid = false;
}
}
//3的倍数
function CheckMultiple3(obj, args)
{
var numberPattern = /\d+/;
//使用正则,判断是数值型,或不能被3整除
if ((!numberPattern.test(args.Value)) || (args.Value % 3 != 0)) {
args.IsValid = false;
}
else {
args.IsValid = true;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table border="1">
<caption>客户端验证</caption>
<tr>
<td>2的倍数</td>
<td>
<asp:TextBox ID="txtDouble" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator2" runat="server" ErrorMessage="请填2的倍数" ControlToValidate="txtDouble" ClientValidationFunction="CheckEven" ValidateEmptyText="true" ></asp:CustomValidator>
</td>
</tr>
<tr>
<td>3的倍数</td>
<td>
<asp:TextBox ID="txtThree" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="请填3的倍数" ControlToValidate="txtThree" ClientValidationFunction="CheckMultiple3" ValidateEmptyText="true"></asp:CustomValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="Button1" runat="server" Text="提交" />
</td>
</tr>
</table>
<br />
<br />
<hr />
<br />
<br />
<table>
<caption>服务器端验证</caption>
<tr>
<td>2的倍数</td>
<td>
<asp:TextBox ID="txtD" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator3" runat="server" ErrorMessage="填2的倍数" ControlToValidate="txtD" OnServerValidate="CustomValidator3_ServerValidate"></asp:CustomValidator>
</td>
</tr>
<tr>
<td>3的倍数</td>
<td>
<asp:TextBox ID="txtT" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator4" runat="server" ErrorMessage="填3的倍数" ControlToValidate="txtT" OnServerValidate="CustomValidator4_ServerValidate"></asp:CustomValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="Button2" runat="server" Text="提交" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
webform1.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace work040
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page.UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None;
}
//2的倍数
protected void CustomValidator3_ServerValidate(object source, ServerValidateEventArgs args)
{
System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex("\\d+");
if (rg.IsMatch(args.Value))
{
args.IsValid = (int.Parse(args.Value) % 2 == 0);
}
else
{
args.IsValid = false;
}
}
//3的倍数
protected void CustomValidator4_ServerValidate(object source, ServerValidateEventArgs args)
{
System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex("\\d+");
if (!rg.IsMatch(args.Value))
{
args.IsValid = false;
}
else
{
args.IsValid = (int.Parse(args.Value) % 3 == 0);
}
}
}
}