【问题标题】:Instant check username availability in Asp.Net using ajax使用 ajax 在 Asp.Net 中即时检查用户名可用性
【发布时间】:2012-01-17 19:02:12
【问题描述】:

我浏览了Encosia 的这篇文章和Travis 的这篇文章 以及来自Mosa 的另一个出色验证者

但是在链接中以及我在整个网络上看到的许多其他文章中,他们没有使用用户创建用户向导来检查用户名的可用性。 但我想使用创建用户向导对其进行验证?

是否有可能将其转换为使用创建用户向导?如果可以,我该怎么做?

实际上在 Encosia 的示例中,有一个代码块显示了 Username_changed:

protected void Username_Changed(object sender, EventArgs e)
{
  if (Membership.GetUser(Username.Text) != null)
    // Display a username taken message.
  else
    // Display a username available message.
}

那么为此我如何根据用户向导进行更改?在创建用户向导中,没有针对个别文本框的特定更改事件?这里我有点困惑:(我得到了一个关于客户端 ID 的说明

我尝试使用 javasript 作为修改它

var UserName = '<%= ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName")).ClientID %>'; 

但这不起作用。

【问题讨论】:

  • 我不确定我是否理解正确,但您只需要Membership.GetUser(username) 来检查用户名是否可用。如果它返回null/nothing,则它可用,否则不可用。但除此之外,CreateUserWizard already shows 用户名是否可用。
  • @Tim-我已经更新了我的疑问:)
  • 我也编辑了我的评论。您知道 CreateUserWizard 已经检查用户名是否可用?
  • @Tim-是的,我同意用户向导仅在完成所有过程后才显示它。但是当他的用户立即更改他的文本时,我想要它。

标签: asp.net ajax


【解决方案1】:

来自MSDN

&lt;asp:WizardStep&gt; 元素添加到CreateUserWizard 控件的&lt;WizardSteps&gt; 部分。在您的自定义 CreateUserWizard 控件将使用的附加向导步骤中包含任何控件和标记。

以下代码示例显示了要在CreateUserWizard 控件的CreateUserStep 之前添加的一个步骤,该控件包括一个供用户输入用户名的文本框控件。将检查用户名以确保它不存在在会员数据库中。

<asp:WizardStep ID="CreateUserWizardStep0" runat="server">
     <table border="0" style="font-size: 100%; font-family: Verdana" id="TABLE1" >
          <tr>
              <td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">
                  Select an Account Name</td>
          </tr>
          <tr>
              <td>
                <asp:Label ID="AccountNameLabel" runat="server" AssociatedControlID="SearchAccount" > 
                  Account Name:</asp:Label>
                <asp:TextBox ID="SearchAccount" runat="server"></asp:TextBox><br />
                <asp:Label ID="SearchAccountMessage" runat="server" ForeColor="red" />                                          
              </td>
          </tr>
      </table>
 </asp:WizardStep>

为您的向导步骤添加代码。您可以处理 Wizard 控件的 NextButtonClick 事件来执行您的代码。 CurrentStepIndex 属性值通过步骤索引号指示哪个附加向导步骤引发了 NextButtonClick 事件(第一步从 0 开始)。

以下代码示例显示了 NextButtonClick 事件的处理程序,该处理程序获取在上一个代码示例的向导步骤中输入到 TextBox 控件中的用户名,并验证用户名不为空且 不为空目前存在于成员数据库中。您需要将 OnNextButtonClick 属性添加到页面上的 CreateUserWizard 控件,该属性引用 NextButtonClick 事件处理程序的处理程序(例如,OnNextButtonClick="CreateUserWizard1_NextButtonClick"。)

private bool UserExists(string username)
{
    if (Membership.GetUser(username) != null) { return true; }

    return false;
}

protected void CreateUserWizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (e.CurrentStepIndex == 0)
    {
        if (SearchAccount.Text.Trim() == "" || UserExists(SearchAccount.Text))
        {
            SearchAccountMessage.Text = "That account already exists. Please select an different account name.";
            e.Cancel = true;
        }
        else
        {
            TextBox userName =
              (TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName");
            userName.Text = SearchAccount.Text;
            SearchAccountMessage.Text = "";
            e.Cancel = false;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2014-04-27
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多