CustomValidator控件允许您用自定义的验证逻辑创建验证控件。例如,可以创建一个验证控件,该控件检查在文本框中输入的值是否为偶数。创建该控件的标准代码如下所示:
<ASP:CustomValidator id="Validator_ID" RunAt="Server"
controlToValidate="要验证的控件的ID"
onServerValidateFunction="验证函数"
errorMessage="错误信息"
Display="Static|Dymatic|None">
</ASP: CustomValidator>
该控件具有基类BaseValidator的属性,除了这些属性外还有一个该控件所特有的属性和事件,如表6-21所示。
表6-21 CustomValidator控件属性和事件
名称
说明
ClientValidationFunction属性
获取或设置用于验证的自定义客户端脚本函数的名称
ServerValidate
在服务器上执行验证时发生
在该控件上若要创建服务器端验证函数,请为执行验证的ServerValidate事件提供处理程序。通过将ServerValidateEventArgs对象的Value属性作为参数传递到事件处理程序,可以访问来自要验证的输入控件的字符串。验证结果随后将存储在ServerValidateEventArgs对象的IsValid属性中。
如果要创建一个客户端验证函数,首先添加先前描述的服务器端验证函数。然后,将客户端验证脚本函数添加到.aspx页中。使用脚本创建函数格式如下所示:
Function ValidationFunctionName (source, arguments)
使用ClientValidationFunction属性指定与CustomValidator控件相关联的客户端验证脚本函数的名称。由于脚本函数在客户端执行,该函数必须使用目标浏览器所支持的语言。与服务器端验证类似,使用arguments参数的Value属性访问要验证的值。通过设置arguments参数的IsValid属性来返回验证结果。
下面创建一个范例,具体说明自定义验证CustomValidator控件的用法,该范例主要是验证用户输入的数字是否为偶数。该范例的具体开发步骤如下所示:
(1)新建一个网站,在ASP.NET页面上创建一个标示“请输入偶数:”,在该标示的后面,添加一个TextBox控件。
(2)然后再添加一个CustomValidator控件,在该控件的【属性】窗口设置其ErrorMessage值为“请输入偶数”、ControlToValidate值为TextBox1。下面为其编辑以客户端验证函数,具体代码如下所示:
<script language="javascript">
function ClientFunction(source,arguments)
{
if(arguments.Value%2==0)
{
arguments.IsValid=true;
}
else
{
arguments.IsValid=false;
}
}
</script>
(3)编写完函数之后,在ControlToValidate控件属性窗口为ClientValidationFunction属性赋值为该函数的名称,然后在页面上添加一个Label标签控件,并在属性窗口设置其Text值为空值,然后在该页面上添加一个Button按钮控件,并设置其Text值为“提交”。至此页面就成功的设计完成了,该页面主要页面代码如下所示:
请输入偶数:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="请输入偶数"
onservervalidate="CustomValidator1_ServerValidate"
ControlToValidate="TextBox1"
ClientValidationFunction="ClientFunction"></asp:CustomValidator><br />
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
(4)接下来为该控件,处理验证处理程序,在CustomValidator的【事件】窗口,双击ServerValidate事件,进入后台代码编写窗口,在此编写如下代码:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
int i = Convert.ToInt32(args.Value);
if (i % 2 == 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
(5)接下来为按钮【提交】,编写单击事件处理程序,在设计视图双击该按钮,进入后台代码编写窗口,具体代码如下所示:
protected void Button1_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
this.Label1.Text = "你输入的是偶数:" + TextBox1.Text;
}
}
原文连接:http://www.cnblogs.com/dongjielanyu/archive/2008/05/23/1205645.html