2012-10-29 2 views
2

CreateUserWizard 컨트롤을 사용하고 있으며 사용자 요구 사항을 충족하도록 사용자 지정하려고합니다.사용자 지정 CreateUserWizard

질문 : CreateUserWizard 컨트롤을 사용하여 Email 텍스트 상자를 다른 단계로 이동하면 CreateUserWizardStep 단계를 수행 할 수 있습니까?

나는 # 1 단계에서 UserName, Password 및 ConfirmPassword를 가지고 있고 2 단계에서는 전자 메일, 사용자 지정 ConfirmEmail, SecurityQuestion/SecurityAnswer 및 기타 정보를 얻고 싶습니다.

마법사 단계를 추가하는 방법을 알고 있지만 기본 텍스트 상자를 이동하면 CreateUserWizard 단계에서 누락 된 필드에 대한 오류가 표시됩니다. 질문 I을 게시 한 후 http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button.validationgroup.aspx

답변

0

나는 당신이이 구조 ValidationGroup 속성의 유효성을 검사

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" > 
    <WizardSteps> 
     <asp:CreateUserWizardStep runat="server"> 
      ..... 
     </asp:CreateUserWizardStep> 
     <asp:WizardStep runat="server"> 
      ... 
     </asp:WizardStep> 
     <asp:CompleteWizardStep runat="server" /> 
    </WizardSteps> 
</asp:CreateUserWizard> 

컨트롤을 테스트

링크

을 필요로 할 때 단지의 유효성을 검사 활성화하기 위해하는 것이 좋습니다 내가 생각하는 몇 가지 대안을 시도해보십시오. UserNameTextBox, PasswordTextBox 및 ConfirmPasswordTextBox가있는 CreateUserWizard 단계 맨 위에 WizardStep을 추가하는 것과 같습니다.

CreateUserWizard 단계에는 ActiveStepChanged 이벤트의 값을 설정하는 숨겨진 UserName, Password 및 ConfirmPassword 텍스트 상자가 있습니다. 이 단계에는 질문 및 답변으로 사용자를 생성하는 데 필요한 다른 필드도 포함되어 있습니다.

이 내 요구 사항을 충족하고 나는 행복한 프로그래머 :

다음
+0

감사합니다. Candie. 실제로 내가하려는 일입니다. 문제는 CreateUserWizard가 실행되고 (이벤트) 사용자가 생성되고 그 시점에서 필요한 모든 정보가 필요할 때입니다. – Mario

+0

당신을 도와 드리겠습니다. 마리오, 포스트 백 및 유효성 검사를 제어하기 위해 유효성 검사기를 단추 및 유효성 검사기에서 사용할 수 있습니다. –

0

내가 당신의 register.aspx 페이지

을에서

Microsoft Visual Studio Express 2013 For Web를 사용하고 사용자 마법사 &을 만드는 사용자 정의하는 방법을 보여주는거야입니다

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" OnCreatedUser="CreateUserWizard1_CreatedUser" CreateUserButtonText="Submit"> 
       <WizardSteps> 
        <asp:CreateUserWizardStep ID="CreateUserWizardStep" runat="server"> 
         <ContentTemplate> 
          <table> 
           <tr> 
            <td>User name: 
            </td> 
            <td> 
             <asp:TextBox ID="UserName" runat="server"></asp:TextBox> 

            </td> 
           </tr> 
           <tr> 
            <td>Password: 
            </td> 
            <td> 
             <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td> 
           </tr> 
           <tr> 
            <td>Confirm Password:</td> 
            <td><asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox> 
            </td> 
           </tr> 
           <tr class="form-group"> 
            <td>E-mail: 
            </td> 
            <td > 
             <asp:TextBox ID="Email" runat="server" TextMode="Email"></asp:TextBox> 
            </td> 
           </tr> 
           <tr> 
            <td>First Name: 
            </td> 
            <td> 
             <asp:TextBox ID="FirstName" runat="server"></asp:TextBox> 
            </td> 
           </tr> 
           <tr> 
            <td>Last Name: 
            </td> 
            <td> 
             <asp:TextBox ID="LastName" runat="server"></asp:TextBox> 

            </td> 
           </tr> 

          </table> 
         </ContentTemplate> 
        </asp:CreateUserWizardStep> 
        <asp:CompleteWizardStep runat="server"></asp:CompleteWizardStep> 
       </WizardSteps> 
      </asp:CreateUserWizard> 

그리고 당신의 Register.aspx.cs 파일 뒤에 CreateUserWizard1_CreatedUser 코드이 코드를 사용

 var manager = new UserManager(); 
     var user = new ApplicationUser() { UserName = CreateUserWizard1.UserName }; 
     IdentityResult result = manager.Create(user, CreateUserWizard1.Password); 
     // Get the UserId of the just-added user 
     MembershipUser newUser = Membership.GetUser(CreateUserWizard1.UserName); 
     Guid newUserId = (Guid)newUser.ProviderUserKey; 
     //Get Profile Data Entered by user in Create User Wizard control 
     String FirstName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("FirstName")).Text; 
     String LastName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("LastName")).Text; 
     // Insert a new record into User_Profile 
     // Get your Connection String from the web.config. MembershipConnectionString is the name I have in my web.config 
     string connectionString = ConfigurationManager.ConnectionStrings["yourConnectionstring"].ConnectionString; 
     string insertSql = "INSERT INTO yourDBTableName(dbTcolumn,dbTcolumn, dbTcolumn) values(@dbTcolumn, @dbTcolumn)"; 

      using (SqlConnection myConnection = new SqlConnection(connectionString)) 
      { 
       IdentityHelper.SignIn(manager, user, isPersistent: false); 
       myConnection.Open(); 
       SqlCommand myCommand = new SqlCommand(insertSql, myConnection); 
       myCommand.Parameters.AddWithValue("@dbTcolumn", FirstName); 
       myCommand.Parameters.AddWithValue("@dbTcolumn", LastName); 
       myCommand.Parameters.AddWithValue("@dbTcolumn", newUserId); 
       myCommand.ExecuteNonQuery(); 
       myConnection.Close(); 
      } 

여기서는 내가 using RequiredFieldValidator이 아닙니다. 당신이 사용하려는 경우, 그냥 Register.aspx 페이지이 울부 짖는 소리 섹션

<asp:RequiredFieldValidator Display="Dynamic" ID="RequiredFieldValidator4" runat="server" 
              ControlToValidate="FirstName" ErrorMessage="The user name field is required." ValidationGroup="CreateUserWizard1"></asp:RequiredFieldValidator> 

를 사용하고 Register.aspx.cs에 if (result.Succeeded) 뒤에 CreateUserWizard1_CreatedUser 코드를 추가
나는 희망이 당신에게 도움은 사용자 만들기 마법사 사용자 정의됩니다 .

감사합니다.

관련 문제