创建自定义验证控件(2)

接上篇 创建自定义验证控件(1)

开发环境VS2008+SQL2005

本篇将写一个比较复杂的自定义控件,AjaxValidator(AJAX自定义验证控件)。AjaxValidator控件用于创建一个服务器端的自定义验证函数。AjaxValidator可以在浏览器调用自定义的验证方法(即客户端脚本直接调用服务器端方法)。

AjaxValidator控件使用AJAX从客户端调用服务器端验证方法,使用AJAX优势在于用户不用显示地回传服务器端。

大家在创建一个注册表单,并且需要验证用户名字段,以确认用户输入的用户名在数据库中并不存在。本篇就利用AjaxValidator写了一个这样的DEMO。AjaxValidator控件可以在客户端调用服务端的验证方法来检查用户名在数据库中是否唯一。

AjaxValidator类的代码如下

Code

 

AjaxValidato控件继承BaseValidator,并实现了ICallbackEventHandler接口。ICallbackEventHandler接口定义了两个方法,当客户端发出AJAX请求时,这两个方法在服务器端调用。

在OnPreRender()方法中,注册了一个内嵌JAVASCRIPT文件和启动脚本。内嵌JAVASCRIPT文件包含了AjaxValidato控件在客户端验证表单字段时调用的客户端函数。启动脚本把客户端的AjaxValidatorEvaluateIsValid()方法和AjaxValidato控件关联起来。执行验证时,客户端验证框架自动调用这个JAVASCRIPT方法。

下面是AjaxValidato控件使用的JAVASCRIPT方法

Code

 

JAVASCRIPT方法AjaxValidatorEvaluateIsValid()通过调用WebForm_DoCallback()方法初始化一个AJAX调用。该方法调用AjaxValidator控件关联的服务器端验证方法。当AJAX调用完成时,再调用AjaxValidatorResult()方法。这个方法在客户端更新验证控件的显示。

页面代码:

Code

 

后台CS代码:

Code

 

这个页面演示了如何使用AjaxValidator控件。页面处理AjaxValidator控件的ServerValidate事件以后将一个自定义验证方法关联到控件上。

页面输入用户名和密码以后,提交表单这些字段的值就会插入到数据库User_Info中。

在后台代码,验证方法检查用户名在数据库中是否已经存在,如果输入的用户名已经存在,就会显示一个验证错误。提交表单返回到服务端之前,这个信息就会显示在浏览器中。

AjaxValidator可以关联任何服务器端验证方法。

数据库建表语句

 

Code

 

 

效果截图:

 

posted @ 2008-12-04 15:18  mFrog  阅读(2809)  评论(16编辑  收藏  举报