Compartir a través de


Cómo: Personalizar el control CreateUserWizard de ASP.NET

Actualización: noviembre 2007

Puede personalizar el contenido del control CreateUserWizard utilizando las plantillas CreateUserWizardStep y CompleteWizardStep. Al especificar el contenido de las plantillas, puede especificar su propia interfaz de usuario personalizada (UI) que incluya controles que utilice el control CreateUserWizard para reunir información sobre el nuevo usuario, así como controles adicionales que especifique (para obtener una lista de los controles que utiliza el control CreateUserWizard, vea Personalizar la apariencia de los controles ASP.NET de inicio de sesión.)

Además, debido a que el control CreateUserWizard hereda de la clase Wizard, puede agregar sus propios pasos personalizados al control CreateUserWizard. Para obtener más información sobre el control Wizard, vea Información general sobre Wizard (Control de servidor Web).

Nota:

También puede personalizar el aspecto del control CreateUserWizard utilizando temas y propiedades de estilo. Para obtener detalles, vea Información general sobre temas y máscaras de ASP.NET y las propiedades del control CreateUserWizard.

Para personalizar los pasos de CreateUserWizard

  1. Coloque un control CreateUserWizard en la página utilizando la sintaxis que se muestra a continuación.

    <asp:CreateUserWizard ID="CreateUserWizard1" Runat="server">
      <WizardSteps>
        <asp:CreateUserWizardStep >
        </asp:CreateUserWizardStep>
        <asp:CompleteWizardStep >
        </asp:CompleteWizardStep>
      </WizardSteps>
    </asp:CreateUserWizard>
    
  2. Para personalizar el paso de creación de cuenta de usuario, cree un elemento <ContentTemplate> dentro del elemento <asp:CreateUserWizardStep>. Dentro de la plantilla, agregue marcado y controles con objeto de definir el diseño y contenido de la interfaz de usuario para recopilar la información que necesita sobre el usuario.

    Nota:

    Si el proveedor de suscripciones extiende la clase MembershipProvider con miembros personalizados, debe agregar controles para recopilar la información personalizada que necesita el proveedor de suscripciones para crear un nuevo usuario. Para obtener información detallada, vea CreateUserWizardStep.

    El siguiente ejemplo de código muestra una propiedad CreateUserStep que incluye controles CheckBox que permiten a los usuarios especificar opciones adicionales.

    <asp:CreateUserWizardStep ID="CreateUserWizardStep1" >
        <ContentTemplate>
            <table border="0" style="font-size: 100%; font-family: Verdana">
                <tr>
                    <td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">
                        Sign Up for Your New Account</td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="UserNameLabel"  AssociatedControlID="UserName">
                            User Name:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="UserName" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="UserNameRequired"  ControlToValidate="UserName"
                            ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="PasswordLabel"  AssociatedControlID="Password">
                            Password:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Password"  TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="PasswordRequired"  ControlToValidate="Password"
                            ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="ConfirmPasswordLabel"  AssociatedControlID="ConfirmPassword">
                            Confirm Password:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="ConfirmPassword"  TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="ConfirmPasswordRequired"  ControlToValidate="ConfirmPassword"
                            ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="EmailLabel"  AssociatedControlID="Email">
                            E-mail:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Email" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="EmailRequired"  ControlToValidate="Email"
                            ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="QuestionLabel"  AssociatedControlID="Question">
                            Security Question:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Question" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="QuestionRequired"  ControlToValidate="Question"
                            ErrorMessage="Security question is required." ToolTip="Security question is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="AnswerLabel"  AssociatedControlID="Answer">
                            Security Answer:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Answer" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="AnswerRequired"  ControlToValidate="Answer"
                            ErrorMessage="Security answer is required." ToolTip="Security answer is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2">
                        <asp:CompareValidator ID="PasswordCompare"  ControlToCompare="Password"
                            ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
                            ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2" style="color: red">
                        <asp:Literal ID="ErrorMessage"  EnableViewState="False"></asp:Literal>
                    </td>
                </tr>
            </table>
            <asp:CheckBox ID="SubscribeCheckBox"  Checked="True" Text="Send me a monthly newsletter." />
            <br />
            <asp:CheckBox ID="ShareInfoCheckBox"  Checked="True" Text="Share my information with partner sites." />
        </ContentTemplate>
    </asp:CreateUserWizardStep>
    
    <asp:CreateUserWizardStep ID="CreateUserWizardStep1" >
        <ContentTemplate>
            <table border="0" style="font-size: 100%; font-family: Verdana">
                <tr>
                    <td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">
                        Sign Up for Your New Account</td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="UserNameLabel"  AssociatedControlID="UserName">
                            User Name:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="UserName" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="UserNameRequired"  ControlToValidate="UserName"
                            ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="PasswordLabel"  AssociatedControlID="Password">
                            Password:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Password"  TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="PasswordRequired"  ControlToValidate="Password"
                            ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="ConfirmPasswordLabel"  AssociatedControlID="ConfirmPassword">
                            Confirm Password:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="ConfirmPassword"  TextMode="Password"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="ConfirmPasswordRequired"  ControlToValidate="ConfirmPassword"
                            ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="EmailLabel"  AssociatedControlID="Email">
                            E-mail:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Email" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="EmailRequired"  ControlToValidate="Email"
                            ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="QuestionLabel"  AssociatedControlID="Question">
                            Security Question:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Question" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="QuestionRequired"  ControlToValidate="Question"
                            ErrorMessage="Security question is required." ToolTip="Security question is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="right">
                        <asp:Label ID="AnswerLabel"  AssociatedControlID="Answer">
                            Security Answer:</asp:Label></td>
                    <td>
                        <asp:TextBox ID="Answer" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="AnswerRequired"  ControlToValidate="Answer"
                            ErrorMessage="Security answer is required." ToolTip="Security answer is required."
                            ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2">
                        <asp:CompareValidator ID="PasswordCompare"  ControlToCompare="Password"
                            ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
                            ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2" style="color: red">
                        <asp:Literal ID="ErrorMessage"  EnableViewState="False"></asp:Literal>
                    </td>
                </tr>
            </table>
            <asp:CheckBox ID="SubscribeCheckBox"  Checked="True" Text="Send me a monthly newsletter." />
            <br />
            <asp:CheckBox ID="ShareInfoCheckBox"  Checked="True" Text="Share my information with partner sites." />
        </ContentTemplate>
    </asp:CreateUserWizardStep>
    
  3. Para personalizar el paso de finalización, cree un elemento <ContentTemplate> dentro del elemento <asp:CompleteWizardStep>. Dentro de la plantilla, agregue marcado y controles con objeto de definir el diseño y contenido de la interfaz de usuario para que se muestre un mensaje de confirmación y, opcionalmente, permitir que el usuario navegue para continuar. Debe proporcionar los controles para recopilar la información que necesita el proveedor de suscripciones para crear una nueva cuenta de usuario. Para obtener información detallada, vea CompleteWizardStep.

    El siguiente ejemplo de código muestra una propiedad CompleteStep que hace referencia a los controles CheckBox del ejemplo anterior.

    <asp:CompleteWizardStep ID="CompleteWizardStep1" >
        <ContentTemplate>
            <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; height: 18px;">
                        Complete</td>
                </tr>
                <tr>
                    <td>
                        Your account has been successfully created.<br />
                        <br />
                        <asp:Label ID="SubscribeLabel"  Text="You have elected to receive our monthly newsletter."></asp:Label><br />
                        <br />
                        <asp:Label ID="ShareInfoLabel"  Text="You have elected to share your information with partner sites."></asp:Label></td>
                </tr>
                <tr>
                    <td align="right" colspan="2">
                        &nbsp;<asp:Button ID="ContinueButton"  BackColor="#FFFBFF" BorderColor="#CCCCCC"
                            BorderStyle="Solid" BorderWidth="1px" CausesValidation="False" CommandName="Continue"
                            Font-Names="Verdana" ForeColor="#284775" Text="Continue" ValidationGroup="CreateUserWizard1" />
                    </td>
                </tr>
            </table>
        </ContentTemplate>
    </asp:CompleteWizardStep>
    
    <asp:CompleteWizardStep ID="CompleteWizardStep1" >
        <ContentTemplate>
            <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; height: 18px;">
                        Complete</td>
                </tr>
                <tr>
                    <td>
                        Your account has been successfully created.<br />
                        <br />
                        <asp:Label ID="SubscribeLabel"  Text="You have elected to receive our monthly newsletter."></asp:Label><br />
                        <br />
                        <asp:Label ID="ShareInfoLabel"  Text="You have elected to share your information with partner sites."></asp:Label></td>
                </tr>
                <tr>
                    <td align="right" colspan="2">
                        &nbsp;<asp:Button ID="ContinueButton"  BackColor="#FFFBFF" BorderColor="#CCCCCC"
                            BorderStyle="Solid" BorderWidth="1px" CausesValidation="False" CommandName="Continue"
                            Font-Names="Verdana" ForeColor="#284775" Text="Continue" ValidationGroup="CreateUserWizard1" />
                    </td>
                </tr>
            </table>
        </ContentTemplate>
    </asp:CompleteWizardStep>
    
  4. Agregue el código para hacer referencia a los controles adicionales. Por ejemplo, controlar el evento CreatingUser le permite escribir el código para recopilar, comprobar y modificar información antes de crear una nueva cuenta de usuario.

    El siguiente ejemplo de código muestra un controlador para el evento CreatedUser que hace referencia a los controles CheckBox de los ejemplos anteriores y los agrega a la propiedad Comment de la cuenta de usuario que se acaba de crear. Será necesario agregar un atributo OnCreatedUser al control CreateUserWizard en su página que haga referencia al controlador para el evento CreatedUser (por ejemplo, OnCreatedUser="CreateUserWizard1_CreatedUser").

    Protected Sub CreateUserWizard1_CreatedUser(ByVal sender As Object, ByVal e As EventArgs)
        ' Determine the checkbox values.
        Dim subscribeCheckBox As CheckBox = _
          CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox"), CheckBox)
        Dim shareInfoCheckBox As CheckBox = _
          CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox"), CheckBox)
        Dim userNameTextBox As TextBox = _
          CType(CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName"), TextBox)
    
    
        Dim user As MembershipUser = Membership.GetUser(userNameTextBox.Text)
        User.Comment = "Subscribe=" & subscribeCheckBox.Checked.ToString() & "&" & _
                       "ShareInfo=" & shareInfoCheckBox.Checked.ToString()
        Membership.UpdateUser(user)
    
        ' Show or hide the labels based on the checkbox values.
        Dim subscribeLabel As Label = _
          CType(CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel"), Label)
        Dim shareInfoLabel As Label = _
          CType(CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel"), Label)
    
        subscribeLabel.Visible = subscribeCheckBox.Checked
        shareInfoLabel.Visible = shareInfoCheckBox.Checked
    End Sub
    
    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
    {
      // Determine the checkbox values.
      CheckBox subscribeCheckBox = 
        (CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox");
      CheckBox shareInfoCheckBox =
        (CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox");
      TextBox userNameTextBox = 
        (TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName");
    
      MembershipUser user = Membership.GetUser(userNameTextBox.Text);
      user.Comment = "Subscribe=" + subscribeCheckBox.Checked.ToString() + "&" +
                     "ShareInfo=" + shareInfoCheckBox.Checked.ToString();
      Membership.UpdateUser(user);
    
      // Show or hide the labels based on the checkbox values.
      Label subscribeLabel = 
        (Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel");
      Label shareInfoLabel =
        (Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel");
    
      subscribeLabel.Visible = subscribeCheckBox.Checked;
      shareInfoLabel.Visible = shareInfoCheckBox.Checked;
    }
    

Para agregar un paso del asistente

  1. Agregue un elemento <asp:WizardStep> a la sección <WizardSteps> del control CreateUserWizard. Incluya cualquier control y marcado en el paso adicional del asistente que su control CreateUserWizard personalizado pueda utilizar.

    Por ejemplo, el siguiente ejemplo de código muestra un paso que se va a agregar antes de CreateUserStep del control CreateUserWizard que incluye un control de cuadro de texto para que los usuarios escriban un nombre de usuario. El nombre de usuario se comprobará para garantizar que no exista ya en la base de datos de suscripción.

    <asp:WizardStep ID="CreateUserWizardStep0" >
         <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"  AssociatedControlID="SearchAccount" > 
                      Account Name:</asp:Label>
                    <asp:TextBox ID="SearchAccount" ></asp:TextBox><br />
                    <asp:Label ID="SearchAccountMessage"  ForeColor="red" />                                          
                  </td>
              </tr>
          </table>
     </asp:WizardStep>
    
    <asp:WizardStep ID="CreateUserWizardStep0" >
         <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"  AssociatedControlID="SearchAccount" > 
                      Account Name:</asp:Label>
                    <asp:TextBox ID="SearchAccount" ></asp:TextBox><br />
                    <asp:Label ID="SearchAccountMessage"  ForeColor="red" />                                          
                  </td>
              </tr>
          </table>
     </asp:WizardStep>
    
  2. Agregue código para el paso del asistente. Puede controlar el evento NextButtonClick del control Wizard para ejecutar su código. El valor de la propiedad CurrentStepIndex indica qué paso adicional del asistente provocó el evento NextButtonClick según el número de índice del paso (empezando el primer paso en 0).

    El siguiente ejemplo de código muestra un controlador para el evento NextButtonClick que toma el nombre de usuario insertado en el control TextBox en el paso del asistente del ejemplo de código anterior y comprueba que el nombre del usuario no esté en blanco y que no se encuentre ya en la base de datos de suscripción. Será necesario agregar un atributo OnNextButtonClick al control CreateUserWizard en su página que haga referencia al controlador para el evento NextButtonClick (por ejemplo, OnNextButtonClick="CreateUserWizard1_NextButtonClick").

    Private Function UserExists(ByVal username As String) As Boolean
        If Membership.GetUser(username) IsNot Nothing Then Return True
    
        Return False
    End Function
    
    Protected Sub CreateUserWizard1_NextButtonClick(ByVal sender As Object, ByVal e As WizardNavigationEventArgs)
        If e.CurrentStepIndex = 0 Then
            If SearchAccount.Text.Trim() = "" OrElse UserExists(SearchAccount.Text) Then
                SearchAccountMessage.Text = "That account already exists. Please select an different account name."
                e.Cancel = True
            Else
                Dim userName As TextBox = _
                  CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox)
                userName.Text = SearchAccount.Text
                SearchAccountMessage.Text = ""
                e.Cancel = False
            End If
        End If
    End Sub
    
    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;
            }
        }
    }
    
    Nota de seguridad:

    Este control tiene un cuadro de texto que acepta datos del usuario, lo que puede suponer una amenaza para la seguridad. De manera predeterminada, las páginas Web ASP.NET validan los datos especificados por el usuario para asegurarse de que no contienen scripts ni elementos HTML. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

Ejemplo

El siguiente ejemplo de código muestra un control CreateUserWizard con plantillas definidas para los dos pasos básicos, CreateUserStep y CompleteStep, y un paso adicional de asistente agregado antes de CreateUserStep.

Nota de seguridad:

Este control tiene un cuadro de texto que acepta datos del usuario, lo que puede suponer una amenaza para la seguridad. Los datos proporcionados por el usuario en una página Web pueden contener scripts de cliente malintencionados. De manera predeterminada, las páginas Web ASP.NET validan los datos especificados por el usuario para asegurarse de que no contienen scripts ni elementos HTML. Siempre que esta validación esté habilitada, no tendrá que comprobar explícitamente si algún usuario está insertando scripts o elementos HTML. Para obtener más información, vea Información general sobre los ataques mediante secuencias de comandos.

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
    Protected Sub CreateUserWizard1_CreatedUser(ByVal sender As Object, ByVal e As EventArgs)
        ' Determine the checkbox values.
        Dim subscribeCheckBox As CheckBox = _
          CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox"), CheckBox)
        Dim shareInfoCheckBox As CheckBox = _
          CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox"), CheckBox)
        Dim userNameTextBox As TextBox = _
          CType(CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName"), TextBox)


        Dim user As MembershipUser = Membership.GetUser(userNameTextBox.Text)
        User.Comment = "Subscribe=" & subscribeCheckBox.Checked.ToString() & "&" & _
                       "ShareInfo=" & shareInfoCheckBox.Checked.ToString()
        Membership.UpdateUser(user)

        ' Show or hide the labels based on the checkbox values.
        Dim subscribeLabel As Label = _
          CType(CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel"), Label)
        Dim shareInfoLabel As Label = _
          CType(CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel"), Label)

        subscribeLabel.Visible = subscribeCheckBox.Checked
        shareInfoLabel.Visible = shareInfoCheckBox.Checked
    End Sub

    Private Function UserExists(ByVal username As String) As Boolean
        If Membership.GetUser(username) IsNot Nothing Then Return True

        Return False
    End Function

    Protected Sub CreateUserWizard1_NextButtonClick(ByVal sender As Object, ByVal e As WizardNavigationEventArgs)
        If e.CurrentStepIndex = 0 Then
            If SearchAccount.Text.Trim() = "" OrElse UserExists(SearchAccount.Text) Then
                SearchAccountMessage.Text = "That account already exists. Please select an different account name."
                e.Cancel = True
            Else
                Dim userName As TextBox = _
                  CType(CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("UserName"), TextBox)
                userName.Text = SearchAccount.Text
                SearchAccountMessage.Text = ""
                e.Cancel = False
            End If
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
        <asp:CreateUserWizard ID="CreateUserWizard1"  BackColor="#F7F6F3" BorderColor="#E6E2D8"
            BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" 
            OnNextButtonClick="CreateUserWizard1_NextButtonClick"
            OnCreatedUser="CreateUserWizard1_CreatedUser" ContinueDestinationPageUrl="~/Default.aspx">
            <WizardSteps>
               <asp:WizardStep ID="CreateUserWizardStep0" >
                    <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"  AssociatedControlID="SearchAccount" > 
                                 Account Name:</asp:Label>
                               <asp:TextBox ID="SearchAccount" ></asp:TextBox><br />
                               <asp:Label ID="SearchAccountMessage"  ForeColor="red" />                                          
                             </td>
                         </tr>
                     </table>
                </asp:WizardStep>
                <asp:CreateUserWizardStep ID="CreateUserWizardStep1" >
                    <ContentTemplate>
                        <table border="0" style="font-size: 100%; font-family: Verdana">
                            <tr>
                                <td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">
                                    Sign Up for Your New Account</td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="UserNameLabel"  AssociatedControlID="UserName">
                                        User Name:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="UserName" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="UserNameRequired"  ControlToValidate="UserName"
                                        ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="PasswordLabel"  AssociatedControlID="Password">
                                        Password:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Password"  TextMode="Password"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="PasswordRequired"  ControlToValidate="Password"
                                        ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="ConfirmPasswordLabel"  AssociatedControlID="ConfirmPassword">
                                        Confirm Password:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="ConfirmPassword"  TextMode="Password"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="ConfirmPasswordRequired"  ControlToValidate="ConfirmPassword"
                                        ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="EmailLabel"  AssociatedControlID="Email">
                                        E-mail:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Email" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="EmailRequired"  ControlToValidate="Email"
                                        ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="QuestionLabel"  AssociatedControlID="Question">
                                        Security Question:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Question" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="QuestionRequired"  ControlToValidate="Question"
                                        ErrorMessage="Security question is required." ToolTip="Security question is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="AnswerLabel"  AssociatedControlID="Answer">
                                        Security Answer:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Answer" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="AnswerRequired"  ControlToValidate="Answer"
                                        ErrorMessage="Security answer is required." ToolTip="Security answer is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="center" colspan="2">
                                    <asp:CompareValidator ID="PasswordCompare"  ControlToCompare="Password"
                                        ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
                                        ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="center" colspan="2" style="color: red">
                                    <asp:Literal ID="ErrorMessage"  EnableViewState="False"></asp:Literal>
                                </td>
                            </tr>
                        </table>
                        <asp:CheckBox ID="SubscribeCheckBox"  Checked="True" Text="Send me a monthly newsletter." />
                        <br />
                        <asp:CheckBox ID="ShareInfoCheckBox"  Checked="True" Text="Share my information with partner sites." />
                    </ContentTemplate>
                </asp:CreateUserWizardStep>
                <asp:CompleteWizardStep ID="CompleteWizardStep1" >
                    <ContentTemplate>
                        <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; height: 18px;">
                                    Complete</td>
                            </tr>
                            <tr>
                                <td>
                                    Your account has been successfully created.<br />
                                    <br />
                                    <asp:Label ID="SubscribeLabel"  Text="You have elected to receive our monthly newsletter."></asp:Label><br />
                                    <br />
                                    <asp:Label ID="ShareInfoLabel"  Text="You have elected to share your information with partner sites."></asp:Label></td>
                            </tr>
                            <tr>
                                <td align="right" colspan="2">
                                    &nbsp;<asp:Button ID="ContinueButton"  BackColor="#FFFBFF" BorderColor="#CCCCCC"
                                        BorderStyle="Solid" BorderWidth="1px" CausesValidation="False" CommandName="Continue"
                                        Font-Names="Verdana" ForeColor="#284775" Text="Continue" ValidationGroup="CreateUserWizard1" />
                                </td>
                            </tr>
                        </table>
                    </ContentTemplate>
                </asp:CompleteWizardStep>
            </WizardSteps>
            <SideBarStyle BackColor="#5D7B9D" BorderWidth="0px" Font-Size="0.9em" VerticalAlign="Top" />
            <TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <SideBarButtonStyle BorderWidth="0px" Font-Names="Verdana" ForeColor="White" />
            <NavigationButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <HeaderStyle BackColor="#5D7B9D" BorderStyle="Solid" Font-Bold="True" Font-Size="0.9em"
                ForeColor="White" HorizontalAlign="Center" />
            <CreateUserButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <ContinueButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <StepStyle BorderWidth="0px" />
        </asp:CreateUserWizard>
        &nbsp;</div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script >
  protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
  {
    // Determine the checkbox values.
    CheckBox subscribeCheckBox = 
      (CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("SubscribeCheckBox");
    CheckBox shareInfoCheckBox =
      (CheckBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ShareInfoCheckBox");
    TextBox userNameTextBox = 
      (TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("UserName");

    MembershipUser user = Membership.GetUser(userNameTextBox.Text);
    user.Comment = "Subscribe=" + subscribeCheckBox.Checked.ToString() + "&" +
                   "ShareInfo=" + shareInfoCheckBox.Checked.ToString();
    Membership.UpdateUser(user);

    // Show or hide the labels based on the checkbox values.
    Label subscribeLabel = 
      (Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("SubscribeLabel");
    Label shareInfoLabel =
      (Label)CreateUserWizard1.CompleteStep.ContentTemplateContainer.FindControl("ShareInfoLabel");

    subscribeLabel.Visible = subscribeCheckBox.Checked;
    shareInfoLabel.Visible = shareInfoCheckBox.Checked;
  }

  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;
          }
      }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" >
    <div>
        <asp:CreateUserWizard ID="CreateUserWizard1"  BackColor="#F7F6F3" BorderColor="#E6E2D8"
            BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" 
            OnNextButtonClick="CreateUserWizard1_NextButtonClick"
            OnCreatedUser="CreateUserWizard1_CreatedUser" ContinueDestinationPageUrl="~/Default.aspx">
            <WizardSteps>
               <asp:WizardStep ID="CreateUserWizardStep0" >
                    <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"  AssociatedControlID="SearchAccount" > 
                                 Account Name:</asp:Label>
                               <asp:TextBox ID="SearchAccount" ></asp:TextBox><br />
                               <asp:Label ID="SearchAccountMessage"  ForeColor="red" />                                          
                             </td>
                         </tr>
                     </table>
                </asp:WizardStep>
                <asp:CreateUserWizardStep ID="CreateUserWizardStep1" >
                    <ContentTemplate>
                        <table border="0" style="font-size: 100%; font-family: Verdana">
                            <tr>
                                <td align="center" colspan="2" style="font-weight: bold; color: white; background-color: #5d7b9d">
                                    Sign Up for Your New Account</td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="UserNameLabel"  AssociatedControlID="UserName">
                                        User Name:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="UserName" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="UserNameRequired"  ControlToValidate="UserName"
                                        ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="PasswordLabel"  AssociatedControlID="Password">
                                        Password:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Password"  TextMode="Password"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="PasswordRequired"  ControlToValidate="Password"
                                        ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="ConfirmPasswordLabel"  AssociatedControlID="ConfirmPassword">
                                        Confirm Password:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="ConfirmPassword"  TextMode="Password"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="ConfirmPasswordRequired"  ControlToValidate="ConfirmPassword"
                                        ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="EmailLabel"  AssociatedControlID="Email">
                                        E-mail:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Email" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="EmailRequired"  ControlToValidate="Email"
                                        ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="QuestionLabel"  AssociatedControlID="Question">
                                        Security Question:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Question" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="QuestionRequired"  ControlToValidate="Question"
                                        ErrorMessage="Security question is required." ToolTip="Security question is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="right">
                                    <asp:Label ID="AnswerLabel"  AssociatedControlID="Answer">
                                        Security Answer:</asp:Label></td>
                                <td>
                                    <asp:TextBox ID="Answer" ></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="AnswerRequired"  ControlToValidate="Answer"
                                        ErrorMessage="Security answer is required." ToolTip="Security answer is required."
                                        ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="center" colspan="2">
                                    <asp:CompareValidator ID="PasswordCompare"  ControlToCompare="Password"
                                        ControlToValidate="ConfirmPassword" Display="Dynamic" ErrorMessage="The Password and Confirmation Password must match."
                                        ValidationGroup="CreateUserWizard1"></asp:CompareValidator>
                                </td>
                            </tr>
                            <tr>
                                <td align="center" colspan="2" style="color: red">
                                    <asp:Literal ID="ErrorMessage"  EnableViewState="False"></asp:Literal>
                                </td>
                            </tr>
                        </table>
                        <asp:CheckBox ID="SubscribeCheckBox"  Checked="True" Text="Send me a monthly newsletter." />
                        <br />
                        <asp:CheckBox ID="ShareInfoCheckBox"  Checked="True" Text="Share my information with partner sites." />
                    </ContentTemplate>
                </asp:CreateUserWizardStep>
                <asp:CompleteWizardStep ID="CompleteWizardStep1" >
                    <ContentTemplate>
                        <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; height: 18px;">
                                    Complete</td>
                            </tr>
                            <tr>
                                <td>
                                    Your account has been successfully created.<br />
                                    <br />
                                    <asp:Label ID="SubscribeLabel"  Text="You have elected to receive our monthly newsletter."></asp:Label><br />
                                    <br />
                                    <asp:Label ID="ShareInfoLabel"  Text="You have elected to share your information with partner sites."></asp:Label></td>
                            </tr>
                            <tr>
                                <td align="right" colspan="2">
                                    &nbsp;<asp:Button ID="ContinueButton"  BackColor="#FFFBFF" BorderColor="#CCCCCC"
                                        BorderStyle="Solid" BorderWidth="1px" CausesValidation="False" CommandName="Continue"
                                        Font-Names="Verdana" ForeColor="#284775" Text="Continue" ValidationGroup="CreateUserWizard1" />
                                </td>
                            </tr>
                        </table>
                    </ContentTemplate>
                </asp:CompleteWizardStep>
            </WizardSteps>
            <SideBarStyle BackColor="#5D7B9D" BorderWidth="0px" Font-Size="0.9em" VerticalAlign="Top" />
            <TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <SideBarButtonStyle BorderWidth="0px" Font-Names="Verdana" ForeColor="White" />
            <NavigationButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <HeaderStyle BackColor="#5D7B9D" BorderStyle="Solid" Font-Bold="True" Font-Size="0.9em"
                ForeColor="White" HorizontalAlign="Center" />
            <CreateUserButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <ContinueButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid"
                BorderWidth="1px" Font-Names="Verdana" ForeColor="#284775" />
            <StepStyle BorderWidth="0px" />
        </asp:CreateUserWizard>
        &nbsp;</div>
    </form>
</body>
</html>

Vea también

Conceptos

Personalizar la apariencia de los controles ASP.NET de inicio de sesión

Información general sobre temas y máscaras de ASP.NET

Referencia

Información general sobre controles de inicio de sesión de ASP.NET

TemplatedWizardStep