访问用户注册向导中的自定义字段

时间:2012-12-01 14:01:57

标签: c# asp.net .net

我创建了一个简单的CreateUserWizard来注册我的用户。我添加了2个TextBox:LastName和FirstName。

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

<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");

唯一的问题是我找到了容器名称&#34; CreateUserStepContainer&#34;通过使用调试器......

2 个答案:

答案 0 :(得分:2)

这个解决方案对我有用:

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

答案 1 :(得分:1)

你必须从CreateUserWizard.CreateUserWizardStep.ContentTemplateContainer.control找到控件  这样做:

 TextBox test = (TextBox)RegisterUser.RegisterUserWizardStep0.ContentTemplateContainer.FindControl("LastName");