这是后台代码,你看一下 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Text.RegularExpressions;namespace ch32 { /// <summary> /// Verify 的摘要说明。 /// </summary> public partial class Verify : System.Web.UI.Page {
protected void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); }
checkuser.aspx?username=XXXXX
然后在这个页面中作手脚,来判断这个用户是否存在
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
Response.Write("<script>alert('用户名已存在);history.back();</script>");
Response.End();
}
else
{
Response.Write("<script>alert('用户名可以正常使用);history.back();</script>");
Response.End();
}
不过楼主还是先把基础的搞好吧
经过楼上的楼主,我仿他们写了下,可出了点问题
protected void LinkButton1_Click(object sender, EventArgs e)
{
if (UserName.Text == "")
{
Response.Write("<script>alert('用户名不能为空!');history.back();</script>"); }
SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString);
SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName + "'", myConnection); ///打开链接
myConnection.Open();
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (sdr.Read())
{
Response.Write("<script>alert('用户名已存在,请重生选择用户名!');history.back();</script>");
Response.End();
sdr.Close(); } else
{
sdr.Close();
Response.Write("<script>alert('此用户名可以正常使用');history.back();</script>");
Response.End(); }
}测试的时候什么不管是否注册过的用户名都可以使用!请大哥们指点下!
SqlCommand cmd = new SqlCommand("select * from Users where UserName = '" + UserName.Text + "'", myConnection);
if not exists(select * from table where name=@name)
begin
insert注册
end
else
begin
返回一个值提示已存在用户
end
这是前台的
<%@ Page language="c#" Inherits="ch32.Verify" CodeFile="Verify.aspx.cs" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Verify</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script type="text/javascript" src="CallBackObject.js"></script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<script type="text/javascript">
var Cbo = new CallBackObject();
Cbo.OnComplete = Cbo_Complete;
Cbo.OnError = Cbo_Error; function CheckUsername(Username)
{
var msg = document.getElementById('lblMessage');
if( Username.length > 0 )
{
Cbo.DoCallBack('tbUsername', '');
}
else
{
Cbo.AbortCallBack();
msg.innerHTML = '';
}
} function Cbo_Complete(responseText, responseXML)
{
var msg = document.getElementById('lblMessage');
if (responseText == '0')
{
msg.innerHTML = '用户名存在!';
msg.style.color = 'green';
}
else if (responseText == '1')
{
msg.innerHTML = '用户名长度必须在3到15之间,且不包含字母、数字和下划线以外的字符!';
msg.style.color = 'red';
}
else
{
msg.innerHTML = '用户名不存在!';
msg.style.color = 'red';
}
} function Cbo_Error(status, statusText, responseText)
{
alert(responseText);
}
</script>
<asp:Label id="Label2" runat="server" Font-Names="黑体,Arial Black" Font-Bold="True" Font-Size="X-Large">基于AJAX的数据验证</asp:Label>
<hr>
<asp:Label id="Label1" runat="server">用户名:</asp:Label>
<asp:TextBox id="tbUsername" runat="server" onkeyup="CheckUsername(this.value)" ontextchanged="tbUsername_TextChanged"></asp:TextBox>
<br>
<asp:Label id="lblMessage" runat="server"></asp:Label>
</form>
</body>
</HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;namespace ch32
{
/// <summary>
/// Verify 的摘要说明。
/// </summary>
public partial class Verify : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion protected void tbUsername_TextChanged(object sender, System.EventArgs e)
{
if( !CallBackHelper.IsCallBack )
return; string strName = tbUsername.Text; try
{
string strReturnCode;
if (!IsValidUsername(strName))
{
strReturnCode = "1";
}
else if (!IsUsernameExist(strName))
{
strReturnCode = "2";
}
else
{
strReturnCode = "0";
}
CallBackHelper.Write(strReturnCode);
}
catch( Exception ex )
{
CallBackHelper.HandleError( ex );
}
} private bool IsUsernameExist(string strUsername)
{
bool bRet = false; switch (strUsername.ToLower())
{
case "test":
case "tom":
case "jack":
case "ajax":
case "aspnet":
bRet = true;
break;
} return bRet;
} private bool IsValidUsername(string strUsername)
{
return (Regex.IsMatch(strUsername, @"^(\w{3,15})$"));
}
}
}
先在wen.config中加上
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
</system.web>下面是前台的脚本
<%@ Page language="c#" Inherits="ch33.Verify" CodeFile="Verify.aspx.cs" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Verify</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="jscript">
function VerifyUsername(name)
{
ch33.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" method="post" runat="server">
<asp:Label id="Label2" runat="server" Font-Names="黑体,Arial Black" Font-Bold="True" Font-Size="X-Large">基于AJAX的数据验证</asp:Label>
<hr>
<asp:Label id="Label1" runat="server">用户名:</asp:Label>
<asp:TextBox id="tbUsername" runat="server" onkeyup="VerifyUsername(this.value)"></asp:TextBox>
<br>
<asp:Label id="lblMessage" runat="server"></asp:Label>
</form>
</body>
</HTML>下面是后台的代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using System.Data.SqlClient;namespace ch33
{
/// <summary>
/// Verify 的摘要说明。
/// </summary>
public partial class Verify : System.Web.UI.Page
{ public DataSet ds;
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
AjaxPro.Utility.RegisterTypeForAjax(typeof(Verify));
//GridView1.DataSource = dbds();
//GridView1.DataBind();
} [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;
ds = dbds();
//switch (strUsername.ToLower())
//{
// case "test":
// case "tom":
// case "jack":
// case "ajax":
// case "aspnet":
// case "shen":
// bRet = true;
// break;
//} for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (strUsername.ToLower() == ds.Tables[0].Rows[i]["UserName"].ToString().ToLower())
{
bRet = true;
return bRet;
}
} return bRet;
} private bool IsValidUsername(string strUsername)
{
return (Regex.IsMatch(strUsername, @"^(\w{3,15})$"));
}
public DataSet dbds()
{
SqlConnection con=new SqlConnection();
//这个地方你可以随便连接到一个数据库 con.ConnectionString="server=.;uid=sa;pwd=000000;database=HDAuto";
SqlDataAdapter da=new SqlDataAdapter("select UserName from UserInfo",con);
DataSet ds=new DataSet();
da.Fill(ds);
return ds;
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{ }
#endregion
}
}
这句脚本在VS2005下会出错,说ch33没有被定义,这个是怎么回事?在VS2005下应该怎么用才对?
其中的ch33.Verify为Inherits的值,
如:WellyeQuery.Check_Username.GetReturnCode(name, IsUsernameExist_callback);