2011-09-22 47 views
0

我正在使用由David ward编写的encosia网站的最佳教程,以及他的网站中给出的用于用户名即时验证的示例。用asp.net进行JQuery用户名验证

以下是原帖链接: http://encosia.com/aspnet-username-availability-checking-via-ajax/

所以用这个代码这里的问题是,虽然我用我的自定义成员资格它总是向我展示用户“Available”,而不是“Not Available”如果用户不在数据库中。

这里是我的代码:

 protected void Username_Changed(object sender, EventArgs e) 
    { 
    System.Threading.Thread.Sleep(2000); 

    if (Membership.GetUser(Username.Text) != null) 
    { 
     UserAvailability.InnerText = "Username taken, sorry."; 
     UserAvailability.Attributes.Add("class", "taken"); 
     Button1.Enabled = false; 
    } 
    else 
    { 
     UserAvailability.InnerText = "Username available!"; 
     UserAvailability.Attributes.Add("class", "available"); 
     Button1.Enabled = true; 
    } 
    } 

这是我的web.config:

 <connectionStrings> 
    <remove name="LocalSqlServer"/> 
    <add name="LocalSqlServer" 
    connectionString="Data Source=.\sqlexpress;Initial Catalog=CustomMembership;Integrated Security=True" 
     providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

<membership defaultProvider="CustomMembership"> 
     <providers> 
     <add name="CustomMembership" 
      connectionStringName="LocalSqlServer" 
      enablePasswordReset="true" 
      enablePasswordRetrieval="false" 
      passwordFormat="Hashed" 
      maxInvalidPasswordAttempts="5" 
      minRequiredPasswordLength="7" 
      minRequiredNonalphanumericCharacters="0" 
      requiresQuestionAndAnswer="false" 
      requiresUniqueEmail="true" 
      passwordAttemptWindow="5" 
      passwordStrengthRegularExpression="" 
      type="System.Web.Security.SqlMembershipProvider" /> 
     </providers> 
    </membership> 
+0

无关,但为什么你要做System.Threading.Thread.Sleep(2000);? –

+0

当用户输入名称,并点击标签按钮,然后只需要更新进度,所以我用它。 – coder

+0

您是否使用aspnet_regsql创建用户数据库? –

回答

1

如果受保护的尝试(如发件人文本框)。文本,替换(Username.Text)无效Username_Changed是由文本框中的更改触发的