2012-01-17 2 views
1

Я прошел через эту статью по Encosia и этой статье Travis и еще один большой валидатор от MosaInstant проверки наличие имени пользователя в Asp.Net с использованием Ajax

Но здесь в ссылке, и во многих других статьях по полотну Я видел, и они не использовали пользовательский мастер создания пользователя для проверки доступности имени пользователя. Но я хочу проверить его, используя мастер создания пользователя?

Есть ли возможность конвертировать это, чтобы получить работу с 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. 
} 

Так что для этого, как я могу изменить в соответствии с мастером пользователя Как в мастер создания пользователя не существует какое-либо конкретное события изменения для Индивидуального Textboxes? Здесь я немного смущен :(и я получил одно уточнение с идентификатором клиента

, и я попытался изменить его с помощью Javasript в

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

Но это не работает.

+0

Я не уверен, если я вас правильно понимаю, но вы просто нужно «Memberhip.GetUser (username)», чтобы проверить, доступно ли имя пользователя или нет. Если он возвращает 'null/nothing', то он доступен в противном случае. Но кроме этого, [CreateUserWizard уже показывает] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.createuserwizard.duplicateusernameerrormessage.aspx), если имя пользователя доступно или нет. –

+0

@ Тим-я обновил свой вопрос с моим сомнением :) – coder

+0

Я тоже редактировал свой комментарий.Вы знаете, что CreateUserWizard уже проверяет, доступно ли имя пользователя или нет? –

ответ

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> 

Добавить код для шага мастера. Вы можете обработать событие NextButtonClick элемента управления Wizard для выполнения кода. Значение свойства 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; 
     } 
    } 
} 
+0

@ Тим-Большое спасибо за предоставление ссылки и подробное объяснение. – coder

Смежные вопросы