由于ASP.NET分层呈现页面,它只会直接呈现最顶层的控件,如对于所有的ASP.NET窗体,其中所有的控件都嵌套在<form>标签中,也就是说,必须检查HtmlForm类的Controls集合来获取页面服务控件的信息。所以,选择递归函数的解决方案:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { DisplayControl(Page.Controls, 0); //打印出分割线 Response.Write("<hr />"); } //显示所有控件树 private void DisplayControl(ControlCollection controls, int depth) { foreach (Control control in controls) { //使用depth参数缩排控件树 Response.Write(new String('-',depth*4) + ">"); //显示该控件 Response.Write(control.GetType().ToString() + "-<b>" + control.ID + "</b><br />"); if (control.Controls != null) { DisplayControl(control.Controls, depth + 1); } } } }