Asp.net通过验证控件在客户端实现一些注册信息的验证,在验证范围上具有一定的限制。比如说用户名是否重复,所有的用户信息是保存在服务器数据库中,所以需要访问服务器,单纯的验证控件无法实现。按照普通的动态网页的实现原理,客户端提交信息,服务器端接收信息进行相应的处理,再返回数据给客户端,在注册功能中无法实现无刷新的注册信息实时验证。
Ajax提供客户端与服务器端的异步信息交换可以实现注册信息实时动态验证。在这里我们采用AjaxPro.Net框架,下面以用户名验证功能来说明:
1 UserRegister.aspx:
<asp:TextBox ID="txtUserName" runat="server" Height="21px" onkeyup="VerifyUsername(this.value)" ></asp:TextBox>
function VerifyUsername(name)
{
UserRegister.GetReturnCode(name, IsUsernameExist_callback);
}
{
UserRegister.GetReturnCode(name, IsUsernameExist_callback);
}
UserRegister为注册页面名称,GetReturnCode为后台C#代码
参数name为当前编辑框中输入的用户名,IsUsernameExist_callback为处理GetReturnCode返回信息的函数。
function IsUsernameExist_callback(res)
{
var msg = document.getElementById("<%=lblMsgUserName.ClientID %>");//lblMsgUserName:显示验证信息
var bRet = res.value;//提取服务器端返回的值
switch(bRet)//根据返回的值显示相应的验证信息
{
case "Valid":
msg.innerHTML = '输入合法';
break;
case "Exist":
msg.innerHTML = '用户名已存在,请使用其他登陆用户名!';
break;
case "NoValid":
msg.innerHTML = '用户名长度必须在3到15之间!';
break;
case "Empty":
msg.innerHTML = '不能为空!';
break;
}
}
2 UserRegister.aspx.cs:
[AjaxPro.AjaxMethod]//AjaxPro.Net方法声明
public string GetReturnCode(string strVal)
{
if (strVal.Equals(string.Empty))
{
return "Empty";
}
else if (!IsValidUsername(strVal))//验证用户名输入格式
{
return "NoValid";
}
else if (IsUsernameExist(strVal))//验证数据库中是否存在此用户名
{
return "Exist";
}
else
{
return "Valid";//合法
}
}