4

我创建了一个简单的 CreateUserWizard 来注册我的用户。我添加了 2 个文本框:姓氏和名字。

现在,我想在用户注册时将它们添加到我的数据库中。这是我所做的:

<asp:CreateUserWizard ID="RegisterUser" runat="server" EnableViewState="false" OnCreatedUser="RegisterUser_CreatedUser" RequireEmail="false">
  <WizardSteps>
    <asp:CreateUserWizardStep ID="RegisterUserWizardStep0" runat="server">
      <ContentTemplate>
        <asp:TextBox ID="LastName" runat="server" ></asp:TextBox>
        [...]
        <asp:Button ID="CreateUserButton" runat="server" CommandName="MoveNext" Text="S'inscrire"
          ValidationGroup="RegisterUserValidationGroup"/>

在 .cs 文件中:

 protected void RegisterUser_CreatedUser(object sender, EventArgs e)
 {
   TextBox test = RegisterUser.FindControl("LastName") as TextBox;
   // Or using the generated ID
   TextBox test2 = RegisterUser.FindControl("MainContent_RegisterUser_CreateUserStepContainer_LastName") as TextBox;
 }

但无论我尝试什么,我的 TextBox 总是null......

我错过了什么 ?我怎样才能得到这些 TextBox 的价值?

编辑: 这个解决方案对我有用:

(TextBox)RegisterUser.WizardSteps[0].FindControl("CreateUserStepContainer").FindControl("LastName");

唯一的问题是我使用调试器找到了容器名称“CreateUserStepContainer”......

4

2 回答 2

2

这个解决方案对我有用:

(TextBox)RegisterUser.WizardSteps[0].FindControl("CreateUserStepContainer").FindControl("LastName");
于 2012-12-13T15:23:33.517 回答
1

你必须像这样找到控件CreateUserWizard.CreateUserWizardStep.ContentTemplateContainer.control

 TextBox test = (TextBox)RegisterUser.RegisterUserWizardStep0.ContentTemplateContainer.FindControl("LastName");
于 2012-12-01T14:06:27.410 回答