0

有没有办法在不创建 Page 类的实例的情况下获取 ASP.Net 页面上使用的控件数量的计数?

4

2 回答 2

1

Asp.net 服务器端控件仅在您创建页面实例后才存在。除非您创建页面类的实例,否则控件不存在,因此不存在计算它们的问题。

从描述中,我假设您想知道可以从特定标记(即 xxx.aspx 页面 html)创建多少控件。我会为此提出一些想法,我自己没有使用过它们,但可能对你有用。

  1. aspx 页面本质上包含 xml,因此您可以将其作为 xml 文档打开并计算所有已设置 runat="server" 的标签。这将为您提供包含此属性的节点的计数,这些属性是服务器端控件

  2. 读取 aspx 文件的内容并计算特定字符串“runat=server”的实例,这将为您提供相同的结果,但方式更简单

  3. 使用 html agility pack 打开 aspx 页面,执行与上面 1 和 2 中相同的操作。

本质上,您正在检查创建页面实例时可能导致服务器端控件的标记。

请记住,从后面的代码动态创建的控件不会被计算在内,只有使用设计器创建的控件才会被计算在内。

于 2013-02-18T12:36:39.380 回答
0

您可以使用如下方法:

public int CountControls(Control top)
{
    int cnt = 1;
    foreach (Control c in top.Controls)
        cnt += CountControls(c);
    return cnt;
}

并称它为

CountControls(Page);

甚至

 int count =Page.Controls.Count;
于 2013-02-18T12:23:07.470 回答