Findcontrol属性在createUserWizard中不起作用

sil*_*vdb 2 c# asp.net createuserwizard

我正在使用ASP的createUserWizard控件来创建我的用户,并且我想在我自己的表中添加一些额外的字段(有用户的额外信息).

我尝试使用findContol属性在代码后面访问这些自定义文本框(因为它们在createUserWizard中)

问题是我声明并初始化为控件的文本框为null.我是这样做的:

TextBox t_desc = (TextBox)(CreateUserWizard1.FindControl("txt_desc")); 
o.organisation_description = t_desc.Text;
Run Code Online (Sandbox Code Playgroud)

这就是嵌套控件的方式:

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"     
      oncreateduser="CreateUserWizard1_CreatedUser">
   <WizardSteps>
       <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" 
                    Title="Registreer uw organisatie">
         <ContentTemplate>
            <div class="row">
               <div class="half">
                  <table>
                     <tr>
                        <td align="right">
                           <asp:Label ID="lbl_organisation_description" runat="server" AssociatedControlID="txt_desc">Beschrijf uw organisatie:</asp:Label>
                        </td>
                        <td>
                           <asp:TextBox ID="txt_desc" runat="server" ValidationGroup="CreateUserWizard1"></asp:TextBox>
                        </td>
                      </tr>
                    </table>
                  </div>
                </div>
              </ContentTemplate>
              </asp:CreateUserWizardStep>
          </WizardSteps>
</asp:CreateUserWizard>
Run Code Online (Sandbox Code Playgroud)

Bor*_*ovs 6

 CreateUserWizardStep step =   (CreateUserWizardStep)  CreateUserWizard1.FindControl("CreateUserWizardStep1"); 
 if (step!=null)
 {
     TextBox txt =  (TextBox)step.ContentTemplateContainer.FindControl("txt_desc");
 }
Run Code Online (Sandbox Code Playgroud)

或者如果您可以从服务器代码中看到您的步骤控制

TextBox txt =  (TextBox)CreateUserWizardStep1.ContentTemplateContainer.FindControl("txt_desc");
Run Code Online (Sandbox Code Playgroud)