网页上必须要有ScriptManager控件,因为这是一个ASP.NET AJAX网页必须要有的。
一个为ASP.NET应用程序服务的数据库,当然,作者写这个控件是最希望你用在ASP.NET Membership服务方面。。。。。
演示
1.我这里直接用发布在 CodePlex 上的模板进行说明, 作者使用ASP.NET CreateUserWizard控件来做模板只是一个使用步骤而已,如果你希望重新开始可以点击重置创建用户步骤,其次你当然可以将UAV控件任意用在其他方面,如下图:
2.从工具箱中将UAV控件拖放到页面上,并设置ControlToValidate属性为用户名的文本框
此外也可以直接在页面上注册UAV控件
<%@ Register Assembly="UAV" Namespace="Encosia" TagPrefix="encosia" %>
用户名文本框旁边现在应该如下:
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<ASP:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard">*</asp:RequiredFieldValidator>
<encosia:UsernameAvailabilityValidator runat="server" ControlToValidate="UserName"
ErrorMessage="Username is not unique" KeyPressDelay="500" MinimumLength="5" ServiceMethod="IsUsernameAvailable"
ServicePath="~/MembershipService.asmx" ValidateOnKeyPress="True" />
UserNameAvailabilityValidator控件的新属性说明:
因为UserNameAvailabilityValidator继承与BaseValidator控件,所以就具有了所有验证的功能,这里说明控件的新功能:
其实只要熟悉过微软的ASP.NET AJAX,看下面的属性意义肯定很容易理解:
ServicePath:web service路径
ServiceMethod:ServicePath中执行逻辑的方法,通常这种方法要求传入一个字符串,并返回一个布尔
MinimumLength:获取或设置一个值表明最小数目的字符的用户名才发生验证。
ValidateOnKeyPress:一个布尔值,表明触发验证是否根据keypress按键事件,默认true。
KeyPressDelay:只有当ValidateOnKeyPress设置为true时有效果 。 设置一个值表示keyup键盘按下后放开多久才发生,以毫秒为单位。
此外,如果你希望用 Page Method 来提供服务,如下:
[System.Web.Services.WebMethod]
public static bool IsUsernameAvailable(string username)
{
if (username.StartsWith("a"))
return false;
return true;
}
然后修改UAV控件的ServicePath 为 ASPX 的代码:
<cc1:UsernameAvailabilityValidator ID="UsernameAvailabilityValidator1"
runat="server"
ControlToValidate="UserName"
ErrorMessage="Username is not unique"
KeyPressDelay="500"
MinimumLength="5"
ServiceMethod="IsUsernameAvailable"
ServicePath="~/CreateUser.ASPx"
ValidateOnKeyPress="True"/>
完毕!
