代码之家  ›  专栏  ›  技术社区  ›  phunehehe

为什么asp.net找不到我的文本框?

  •  2
  • phunehehe  · 技术社区  · 14 年前

    我正在尝试向 CreateUserWizardStep ,我补充说:

    <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server">
        <ContentTemplate>
            <table border="0">
                <tr>
                    <td align="right">
                        <asp:Label ID="NickNameLabel" runat="server" AssociatedControlID="NickName">Nick Name:</asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="NickName" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="NickName"
                            ErrorMessage="Nick Name is required." ToolTip="Nick Name is required." ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
                    </td>
                </tr>
                <%-- The default code is left unchanged, but not shown here --%>
            </table>
        </ContentTemplate>
    </asp:CreateUserWizardStep>
    

    然后我试着引用这样的对象

    protected void NewUserWizard_CreatedUser(object sender, EventArgs e)
    {
        CreateUserWizardStep step = NewUserWizard.FindControl("CreateUserWizardStep1") as CreateUserWizardStep;
        TextBox nickName = step.FindControl("NickName") as TextBox;
        // insert additional information to the database
    }
    

    问题是,我得到的是空值 nickName FindControl("") 不正确?

    3 回复  |  直到 14 年前
        1
  •  3
  •   derek    14 年前

    您可能需要使用递归查找控制函数,例如: http://stevesmithblog.com/blog/recursive-findcontrol/

        2
  •  2
  •   ChrisF PerfectlyRock    14 年前

    FindControl 只有

    在当前命名容器中搜索指定的服务器控件。

    i、 它只检查当前的容器 直接的

    你可以用 Controls 归还所有子女的财产 step :

    ControlCollection children = step.Controls;
    

        3
  •  0
  •   Doobi    14 年前

    CreateUserWizardStep1.Nickname标签