做网站用户注册时,都要验证用户名是否已经被注册,现在最常见的做法是点了提交以后再在服务器端检查,这样给用户带来很大不便,如果用户名已经被注册就需要返回重输用户名和密码,这样带来了不必要的回发过程。以前在阿里巴巴注册时发现阿里巴巴在这点上做得很好,他们就是实时检查的。那么我们如何在 .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();

好了,终于介绍完了,第一次写博客,再加上文笔差,不知道说清了没有,如果没有说清请大家谅解!:
附上:Demo 文件 下载
文章2:
From:http://www.cftea.com/c/2007/11/BI6ST1SSTI6B6NBE.asp
本节介绍 CustomValidator,该控件用于自定义验证,我们以验证是否选择了下拉列表框(DropDownList)的有效项为例。
<asp:DropDownList ID="list" runat="server">
<asp:ListItem Text="请选择" Value="0"></asp:ListItem>
<asp:ListItem Text="Item1" Value="a"></asp:ListItem>
<asp:ListItem Text="Item2" Value="b"></asp:ListItem>
</asp:DropDownList>
<asp:CustomValidator ID="valid1" runat="server"
ControlToValidate="list" OnServerValidate="ChkList"
Display="dynamic" SetFocusOnError="true" ErrorMessage="d">请选择项目</asp:CustomValidator>
<asp:Button ID="btn" runat="server" Text="提交" />
<asp:ListItem Text="请选择" Value="0"></asp:ListItem>
<asp:ListItem Text="Item1" Value="a"></asp:ListItem>
<asp:ListItem Text="Item2" Value="b"></asp:ListItem>
</asp:DropDownList>
<asp:CustomValidator ID="valid1" runat="server"
ControlToValidate="list" OnServerValidate="ChkList"
Display="dynamic" SetFocusOnError="true" ErrorMessage="d">请选择项目</asp:CustomValidator>
<asp:Button ID="btn" runat="server" Text="提交" />
下拉列表框中的第一项为提示项,如果在下拉列表框中没有选择 Item1 或 Item2,则提示“请选择项目”,注意:下拉列表框的提示项的 value 不能是零长度字符串,否则不会进行验证!下面接着看验证函数代码:
protected void ChkList(object source, ServerValidateEventArgs args)
{
if (args.Value != "0")
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
{
if (args.Value != "0")
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
args 有两个重要属性:
- Value 要验证的值。
- IsValid 验证是否通过。

评论表单加载中...