//页面 a.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <uc1:Nav ID="Nav1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
    <br />
    <uc2:TemplateRegAccount ID="TemplateRegAccount1" runat="server" />
    <br /><br />
    <asp:PlaceHolder ID="PlaceHolderUserInfoControl" runat="server"></asp:PlaceHolder>
    <br /><br /><br />
    <div><center>
    <asp:Label ID="Error" runat="server" Text=""></asp:Label></center></div>
    <div>
    <center>
        <asp:Button ID="Button1" runat="server" Text="  提  交  " 
            onclick="Button1_Click" />
    </center>
    </div>
</asp:Content>
//是动态加载的控件b.ascx  或 c.ascx
b.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>c.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
//问题。我如何在 a.aspx 里 查找这些控件,的数量,及值,ID 不确定。
有封装的方法访问吗?

解决方案 »

  1.   


            /// <summary>
            /// 获取某一控件所有的子控件
            /// </summary>
            /// <param name="contrl"></param>
            /// <returns></returns>
            public static List<T> GetCtrlAllSubCtrls<T>(Control contrl) where T : Control 
            {
                List<T> results = new List<T>();            foreach (Control control in contrl.Controls)
                {
                    if (control.Controls.Count > 0)
                    {
                        results.AddRange(GetCtrlAllSubCtrls<T>(control));
                    }
                    else
                    {
                        T t = control as T;
                        if(t!=null) results.Add(t);
                    }
                }            return results;
            }这是个泛型方法,会递归所有的控件的,具体在页面中
    GetCtrlAllSubCtrls<TextBox>(this);
      

  2.   

    动态加载的b.ascx 这个好象不行。
      

  3.   

    那就在加载后调用 
    GetCtrlAllSubCtrls<TextBox>(aAscxCtrl);