我在Encosia和Travis这篇文章之后阅读了这篇文章。 和来自Mosa
的另一个很好的验证器但是在链接和整个网络上的许多其他文章中我看到过,他们没有使用用户创建用户向导来检查用户名可用性。 但我想使用create user wizard验证它吗?
是否有可能将其转换为使用“创建用户向导”?如果是这样,我该怎么做?
实际上在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 %>';
但这不起作用。
答案 0 :(得分:1)
来自MSDN
将<asp:WizardStep>
元素添加到<WizardSteps>
控件的CreateUserWizard
部分。在自定义CreateUserWizard控件将使用的其他向导步骤中包含任何控件和标记。
以下代码示例显示了在CreateUserStep
控件的CreateUserWizard
之前添加的步骤,其中包含用于输入用户名的文本框控件。将检查用户名以确保其在成员资格数据库中尚不存在。
<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;
}
}
}