CustomValidator

系统 1582 0

使用CustomValidator类及时验证用户名

 

      做网站用户注册时,都要验证用户名是否已经被注册,现在最常见的做法是点了提交以后再在服务器端检查,这样给用户带来很大不便,如果用户名已经被注册就需要返回重输用户名和密码,这样带来了不必要的回发过程。以前在 阿里巴巴 注册时发现阿里巴巴在这点上做得很好,他们就是实时检查的。那么我们如何在 .Net 里面实现在这个功能呢。先看一下简单的思路,就是在客户端 Textbox 引发 onchange 事件时使用 XmlHttpRequest 在后台打开一个网页检查反馈结果。来看看简单实现

function  Init()  {
    
var  userName = document.getElementById( " UserName " );
    userName.onchange
= function () {
        
var  oBao  =   new  ActiveXObject( " Microsoft.XMLHTTP " );
        oBao.open(
" Get " , " check.aspx?username= "   +  userName.value, false );
        oBao.send();
        
var  strResult  =  oBao.responseText;
    }

}

window.onload
= Init;

在网页上插入一个ID为UserName 的 TextBox 这样检查 ,然后在check.aspx 内检查用户名的使用情况,strResult 就可以知道,这样我们的功能算是完成了,但是这样做的缺点就是不能与验证控制一起验证,这时我们可以使用CustomValidator,因为CustomValidator是允许自己添加脚本进行验证的,我们把上面的脚本改一下,移到CustomValidator 的客户端里面。代码如下:

function  ValidationFunctionName(source, arguments)
{
    
var  userName  = document.getElementById( " UserName " );
    
var  oBao  =   new  ActiveXObject( " Microsoft.XMLHTTP " );
    oBao.open(
" Get " , " Check.aspx?username= "   +  userName.value, false );  
    oBao.send();
    
var  strResult  =  oBao.responseText;

    
// 如果返回 1 就代表可以使用,否则不能通过验证
     if  (Number(strResult)  ==   1 )
        arguments.IsValid 
=   true ;    
    
else
        arguments.IsValid 
=   false ;
}


在网页上再添加一个 CustomValidator  控件,再设一下要验证的控件ID把 ControlToValidate 设成 UserName,
主要设置客户端验证方法 ClientValidationFunction 为 ValidationFunctionName,如:<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="UserName" ClientValidationFunction="ValidationFunctionName"
                ErrorMessage="被注册的用户名"></asp:CustomValidator>,然后在Check.aspx 里面完成检查,在我这里是如果可用就往网页上写 1 否则 写 0 ,注意:在Check.aspx 输出的地方一定要调用        Response.Clear() 和 Response.End() 来保证输出的信息只有 1 或 0,当前你也可以用别的方法输出,我这里为了快速实现使用了这种方法,我是在PageLoad 里面与的,如下
Response.Clear();
// 检查用户名
if  (CheckUserName())
    Response.Write(
" 1 " );
else
     Response.Write(
" 0 " );
Response.End();

CustomValidator


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论