在asp.net中基于Ajax的数据验证

在asp.net中基于Ajax的数据验证

很多网站都使用了ajax技术进行数据验证,如淘宝网站。那么我们如果使用ASP.NET怎样实现这样的效果呢?

效果图:
1、在用户名框输入An两个字符,系统立刻无刷新响应错误提示,请看红色文字;

1.GIF
2、当我接着输入“dy”以完成用户名“Andy”的输入,系统立刻无刷新响应提示,系统进行了与数据库校验,发现用户名不存在,无刷新显示提示;
2.GIF
3、当我改为用户名“Nic”输入时,系统无刷新的提示“用户名存在”,也进行了与数据库的通讯;
3.GIF

实现代码:
aspx代码如下:
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ Page Language="C#" AutoEventWireup="true" CodeFile="Verify.aspx.cs" Inherits="Verify" %>
None.gif
None.gif
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
None.gif
None.gif
<html xmlns="http://www.w3.org/1999/xhtml" >
None.gif
<head runat="server">
None.gif     
<title>Verify</title>
ExpandedBlockStart.gifContractedBlock.gif    
<script language="jscript">dot.gif
InBlock.gif    
function VerifyUsername(name)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        Verify.GetReturnCode(name,IsUsernameExist_callback);
ExpandedSubBlockEnd.gif    }

InBlock.gif    
InBlock.gif    
function IsUsernameExist_callback(res)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
var msg = document.getElementById("lblMessage");
InBlock.gif        
var bRet = res.value;
InBlock.gif        
if(bRet == "0")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            msg.innerHTML 
= "用户名存在!";
InBlock.gif            msg.style.color 
= "green";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else if(bRet == "1")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            msg.innerHTML 
= "用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!";
InBlock.gif            msg.style.color 
= "red";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            msg.innerHTML 
= "用户名不存在!";
InBlock.gif            msg.style.color 
= "red";
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif    
</script>
None.gif
</head>
None.gif
<body>
None.gif    
<form id="form1" runat="server">
None.gif    
<div>
None.gif        
<h1>基于Ajax的数据验证</h1>
None.gif        
<hr />
None.gif        
<asp:Label ID="Label1" runat="server">用户名:</asp:Label>
None.gif        
<input type="text" id="tbUsername" onkeyup="VerifyUsername(this.value)" /><br />
None.gif        
<asp:Label ID="lblMessage" runat="server"></asp:Label>
None.gif    
</div>
None.gif    
</form>
None.gif
</body>
None.gif
</html>
None.gif

后台C#代码:
None.gifusing System;
None.gifusing System.Data;
None.gifusing System.Configuration;
None.gifusing System.Collections;
None.gifusing System.Web;
None.gifusing System.Web.Security;
None.gifusing System.Web.UI;
None.gifusing System.Web.UI.WebControls;
None.gifusing System.Web.UI.WebControls.WebParts;
None.gifusing System.Web.UI.HtmlControls;
None.gifusing System.Text.RegularExpressions;
None.gif
None.gifpublic partial class Verify : System.Web.UI.Page
None.gif{
None.gif    protected void Page_Load(object sender, EventArgs e)
None.gif    {
None.gif        AjaxPro.Utility.RegisterTypeForAjax(typeof(Verify));
None.gif        //作用是向客户端输出下面的代码:
None.gif        //
<script type="text/javascript" src="/ajaxprotest/ajaxpro/prototype.ashx"></script>
None.gif        //
<script type="text/javascript" src="/ajaxprotest/ajaxpro/core.ashx"></script>
None.gif        //
<script type="text/javascript" src="/ajaxprotest/ajaxpro/converter.ashx"></script>
None.gif        //
<script type="text/javascript" src="/ajaxprotest/ajaxpro/Verify,App_Web_elgsobcn.ashx"></script>
None.gif    }
None.gif
None.gif    //加上[AjaxPro.AjaxMethod],才能被客户端访问
None.gif    [AjaxPro.AjaxMethod]
None.gif    public string GetReturnCode(string strUsername)
None.gif    {
None.gif        if (!IsValidUsername(strUsername))
None.gif        {
None.gif            return "1";
None.gif        }
None.gif        else if (!IsUsernameExist(strUsername))
None.gif        {
None.gif            return "2";
None.gif        }
None.gif        else
None.gif        {
None.gif            return "0";
None.gif        }
None.gif    }
None.gif
None.gif    private bool IsUsernameExist(string strUsername)
None.gif    {
None.gif        bool bRet = false;
None.gif
None.gif        switch (strUsername.ToLower())
None.gif        {
None.gif            case "test":
None.gif            case "tom":
None.gif            case "jack":
None.gif            case "ajax":
None.gif            case "aspnet":
None.gif            case "nic":
None.gif                bRet = true;
None.gif                break;
None.gif        }
None.gif
None.gif        return bRet;
None.gif    }
None.gif
None.gif
None.gif
None.gif    private bool IsValidUsername(string strUsername)
None.gif    {
None.gif        return (Regex.IsMatch(strUsername, @"^(\w{3,15})$"));
None.gif    }
None.gif
None.gif    private bool IsValidEmail(string strEmail)
None.gif    {
None.gif        return (Regex.IsMatch(strEmail, @"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"));
None.gif    }
None.gif
None.gif}
None.gif

说明:我这里使用了ajaxpro.net库进行开发,大家可以在网络上找找最新版的ajaxpro.net库,下载后在项目里引用就可以了!

转载于:https://www.cnblogs.com/NicNet/archive/2006/05/09/395618.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值