在asp.net中基于Ajax的数据验证
2006-05-10 16:42
507 查看
很多网站都使用了ajax技术进行数据验证,如淘宝网站。那么我们如果使用ASP.NET怎样实现这样的效果呢?
效果图:
1、在用户名框输入An两个字符,系统立刻无刷新响应错误提示,请看红色文字;
2、当我接着输入“dy”以完成用户名“Andy”的输入,系统立刻无刷新响应提示,系统进行了与数据库校验,发现用户名不存在,无刷新显示提示;
3、当我改为用户名“Nic”输入时,系统无刷新的提示“用户名存在”,也进行了与数据库的通讯;
实现代码:
aspx代码如下:
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Verify.aspx.cs" Inherits="Verify" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Verify</title>
<script language="jscript">
function VerifyUsername(name)
{
Verify.GetReturnCode(name,IsUsernameExist_callback);
}
function IsUsernameExist_callback(res)
{
var msg = document.getElementById("lblMessage");
var bRet = res.value;
if(bRet == "0")
{
msg.innerHTML = "用户名存在!";
msg.style.color = "green";
}
else if(bRet == "1")
{
msg.innerHTML = "用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!";
msg.style.color = "red";
}
else
{
msg.innerHTML = "用户名不存在!";
msg.style.color = "red";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>基于Ajax的数据验证</h1>
<hr />
<asp:Label ID="Label1" runat="server">用户名:</asp:Label>
<input type="text" id="tbUsername" onkeyup="VerifyUsername(this.value)" /><br />
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
后台C#代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
public partial class Verify : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Verify));
//作用是向客户端输出下面的代码:
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/prototype.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/core.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/converter.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/Verify,App_Web_elgsobcn.ashx"></script>
}
//加上[AjaxPro.AjaxMethod],才能被客户端访问
[AjaxPro.AjaxMethod]
public string GetReturnCode(string strUsername)
{
if (!IsValidUsername(strUsername))
{
return "1";
}
else if (!IsUsernameExist(strUsername))
{
return "2";
}
else
{
return "0";
}
}
private bool IsUsernameExist(string strUsername)
{
bool bRet = false;
switch (strUsername.ToLower())
{
case "test":
case "tom":
case "jack":
case "ajax":
case "aspnet":
case "nic":
bRet = true;
break;
}
return bRet;
}
private bool IsValidUsername(string strUsername)
{
return (Regex.IsMatch(strUsername, @"^(/w{3,15})$"));
}
private bool IsValidEmail(string strEmail)
{
return (Regex.IsMatch(strEmail, @"^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$"));
}
}
说明:我这里使用了ajaxpro.net库进行开发,大家可以在网络上找找最新版的ajaxpro.net库,下载后在项目里引用就可以了!
效果图:
1、在用户名框输入An两个字符,系统立刻无刷新响应错误提示,请看红色文字;
2、当我接着输入“dy”以完成用户名“Andy”的输入,系统立刻无刷新响应提示,系统进行了与数据库校验,发现用户名不存在,无刷新显示提示;
3、当我改为用户名“Nic”输入时,系统无刷新的提示“用户名存在”,也进行了与数据库的通讯;
实现代码:
aspx代码如下:
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Verify.aspx.cs" Inherits="Verify" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Verify</title>
<script language="jscript">
function VerifyUsername(name)
{
Verify.GetReturnCode(name,IsUsernameExist_callback);
}
function IsUsernameExist_callback(res)
{
var msg = document.getElementById("lblMessage");
var bRet = res.value;
if(bRet == "0")
{
msg.innerHTML = "用户名存在!";
msg.style.color = "green";
}
else if(bRet == "1")
{
msg.innerHTML = "用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!";
msg.style.color = "red";
}
else
{
msg.innerHTML = "用户名不存在!";
msg.style.color = "red";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>基于Ajax的数据验证</h1>
<hr />
<asp:Label ID="Label1" runat="server">用户名:</asp:Label>
<input type="text" id="tbUsername" onkeyup="VerifyUsername(this.value)" /><br />
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
后台C#代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
public partial class Verify : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Verify));
//作用是向客户端输出下面的代码:
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/prototype.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/core.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/converter.ashx"></script>
//<script type="text/javascript" src="/ajaxprotest/ajaxpro/Verify,App_Web_elgsobcn.ashx"></script>
}
//加上[AjaxPro.AjaxMethod],才能被客户端访问
[AjaxPro.AjaxMethod]
public string GetReturnCode(string strUsername)
{
if (!IsValidUsername(strUsername))
{
return "1";
}
else if (!IsUsernameExist(strUsername))
{
return "2";
}
else
{
return "0";
}
}
private bool IsUsernameExist(string strUsername)
{
bool bRet = false;
switch (strUsername.ToLower())
{
case "test":
case "tom":
case "jack":
case "ajax":
case "aspnet":
case "nic":
bRet = true;
break;
}
return bRet;
}
private bool IsValidUsername(string strUsername)
{
return (Regex.IsMatch(strUsername, @"^(/w{3,15})$"));
}
private bool IsValidEmail(string strEmail)
{
return (Regex.IsMatch(strEmail, @"^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$"));
}
}
说明:我这里使用了ajaxpro.net库进行开发,大家可以在网络上找找最新版的ajaxpro.net库,下载后在项目里引用就可以了!
相关文章推荐
- 在asp.net中基于AjaxPro的数据验证
- 在asp.net中基于Ajax的数据验证
- Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- 基于ASP.NET AJAX框架实现表单验证编程原理
- ASP.NET基于JQUERY的AJAX的验证登录(JSON)
- ASP.NET基于JQUERY的AJAX的验证登录(JSON)
- Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- 基于ASP.NET Core数据保护生成验证token示例
- [导入]Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- Ajax即时实现服务端数据验证(Asp.net 2.0)(示例代码下载)
- Asp.net中基于Forms验证的角色验证授权
- SharePoint And Ajax Technology(4):基于Microsoft ASP.NET AJAX 3.5的扩展2
- asp.net结合Ajax验证用户名是否存在的代码
- 【翻译】多域校验控件——基于ASP.NET的验证控件[Carol]
- Jquery利用ajax调用asp.net webservice的各种数据类型(总结篇)
- 转:关于ASP.NET下,JQuery+AJAX使用JSON返回数据的总结
- ASP.NET一个页面多个Button按钮事件避免数据验证控件RequiredFieldValidator冲突方法
- Asp.net中基于Forms验证的角色验证授权(转)
- ASP.NET MVC实践系列3-服务器端数据验证