我正在使用由大卫病房编写的最好的encosia网站教程,以及他在网站上给出的用于即时验证用户名的示例。
以下是原帖的链接: 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 :(得分:1)
尝试将(Username.Text)替换为(sender为TextBox).Text,如果受保护void Username_Changed由文本框中的更改触发