1

我已经通过继承.NET成员资格提供程序实现了自定义成员资格提供程序。对于我的前端使用CreateUserWizard控件,这是与我的会员提供商连接。我已经编辑CreateUserWizard控件的模板,所以现在它看起来像这样:自定义成员资格提供程序中自定义字段的值

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
        MembershipProvider="CmsMembershipProvider" BackColor="#E3EAEB" 
        BorderColor="#E6E2D8" BorderStyle="Solid" BorderWidth="1px" 
        Font-Names="Verdana" Font-Size="0.8em" 
        ContinueDestinationPageUrl="~/Pages/FirstPage.aspx"> 
        <ContinueButtonStyle BackColor="White" BorderColor="#C5BBAF" 
         BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" 
         ForeColor="#1C5E55" /> 
        <CreateUserButtonStyle BackColor="White" BorderColor="#C5BBAF" 
         BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" 
         ForeColor="#1C5E55" /> 
        <TitleTextStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
        <WizardSteps> 
         <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"> 
          <ContentTemplate> 
           <table> 
            <tr> 
             <td align="center" colspan="2" class="style3"> 
              <strong>Sign Up for Your New Account</strong></td> 
            </tr> 
            <tr> 
             <td align="right"> 
              <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label> 
             </td> 
             <td> 
              <asp:TextBox ID="UserName" name="usna" runat="server"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
               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" runat="server" AssociatedControlID="Password">Password:</asp:Label> 
             </td> 
             <td> 
              <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" 
               ControlToValidate="Password" ErrorMessage="Password is required." 
               ToolTip="Password is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator> 
             </td> 
            </tr> 
            <tr> 
             <td align="right"> 
              <asp:Label ID="ConfirmPasswordLabel" runat="server" 
               AssociatedControlID="ConfirmPassword">Confirm Password:</asp:Label> 
             </td> 
             <td> 
              <asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" 
               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" runat="server" AssociatedControlID="Email">E-mail:</asp:Label> 
             </td> 
             <td> 
              <asp:TextBox ID="Email" runat="server"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="EmailRequired" runat="server" 
               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="DomainLabel" runat="server" AssociatedControlID="Domain">Domain:</asp:Label> 
             </td> 
             <td> 
              <asp:TextBox ID="Domain" runat="server"></asp:TextBox> 
              <asp:RequiredFieldValidator ID="DomainRequired" runat="server" 
               ControlToValidate="Domain" ErrorMessage="Domain is required." 
               ToolTip="Domain is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator> 
             </td> 
            </tr> 
            <tr> 
             <td align="center" colspan="2" style="color:Red;"> 
              <asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal> 
             </td> 
            </tr> 
           </table> 
          </ContentTemplate> 
          <CustomNavigationTemplate> 
           <table border="0" cellspacing="5" style="width:100%;height:100%;"> 
            <tr align="right"> 
             <td align="right" colspan="0"> 
              <asp:Button ID="StepNextButton" runat="server" BackColor="White" 
               BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
               CommandName="MoveNext" Font-Names="Verdana" ForeColor="#1C5E55" 
               Text="Create User" ValidationGroup="CreateUserWizard1" /> 
             </td> 
            </tr> 
           </table> 
          </CustomNavigationTemplate> 
         </asp:CreateUserWizardStep> 
         <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"> 
         </asp:CompleteWizardStep> 
        </WizardSteps> 
        <FinishNavigationTemplate> 
         <asp:Button ID="FinishPreviousButton" runat="server" BackColor="White" 
          BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
          CausesValidation="False" CommandName="MovePrevious" Font-Names="Verdana" 
          ForeColor="#1C5E55" Text="Previous" /> 
         <asp:Button ID="FinishButton" runat="server" BackColor="White" 
          BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
          CommandName="MoveComplete" Font-Names="Verdana" ForeColor="#1C5E55" 
          Text="Finish" /> 
        </FinishNavigationTemplate> 
        <HeaderStyle BackColor="#666666" BorderColor="#E6E2D8" BorderStyle="Solid" 
         BorderWidth="2px" Font-Bold="True" Font-Size="0.9em" ForeColor="White" 
         HorizontalAlign="Center" /> 
        <NavigationButtonStyle BackColor="White" BorderColor="#C5BBAF" 
         BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" 
         ForeColor="#1C5E55" /> 
        <SideBarButtonStyle ForeColor="White" /> 
        <SideBarStyle BackColor="#1C5E55" Font-Size="0.9em" VerticalAlign="Top" /> 
        <StartNavigationTemplate> 
         <asp:Button ID="StartNextButton" runat="server" BackColor="White" 
          BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
          CommandName="MoveNext" Font-Names="Verdana" ForeColor="#1C5E55" Text="Next" /> 
        </StartNavigationTemplate> 
        <StepNavigationTemplate> 
         <asp:Button ID="StepPreviousButton" runat="server" BackColor="White" 
          BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
          CausesValidation="False" CommandName="MovePrevious" Font-Names="Verdana" 
          ForeColor="#1C5E55" Text="Previous" /> 
         <asp:Button ID="StepNextButton" runat="server" BackColor="White" 
          BorderColor="#C5BBAF" BorderStyle="Solid" BorderWidth="1px" 
          CommandName="MoveNext" Font-Names="Verdana" ForeColor="#1C5E55" Text="Next" /> 
        </StepNavigationTemplate> 
        <StepStyle BorderWidth="0px" /> 
       </asp:CreateUserWizard> 

它具有原fieds减去SecurityQuestion和答案,但除了我有场域至极是文本框。

我重写方法CREATEUSER,所以它看起来是这样的:

​​

它插入到数据库的完美,但我不能从形式获取文本框域的值,因为创建用户不发送变量。 我发现了一些例子,他们说我可以在CreateUserWizard中创建另一个步骤,然后用新的值集更新数据库,但我不想在不同的步骤中这样做。它可以一步完成吗?

回答

1

由于您有一个用户的额外信息,您可能需要考虑创建一个默认值Custom Membership User。然后,您可以提供另一个覆盖,以便插入该信息的CreateUser方法。

+0

我正在考虑这个......另一种选择是在CreateUserWizard控件上添加onCreatedUser事件,并处理启动的方法内的附加字段的值。你对此有何看法? – 2012-02-07 23:29:20

+0

@stanislav - 你可以这样做,但这样你将有一个中心位置来处理你的额外信息,如果你在其他地方需要它,你只需要打电话给会员来获得额外的信息。 – TheBoyan 2012-02-07 23:35:53

+0

thx煽动... – 2012-02-07 23:44:37

相关问题