有没有办法在不创建 Page 类的实例的情况下获取 ASP.Net 页面上使用的控件数量的计数?
问问题
1115 次
2 回答
1
Asp.net 服务器端控件仅在您创建页面实例后才存在。除非您创建页面类的实例,否则控件不存在,因此不存在计算它们的问题。
从描述中,我假设您想知道可以从特定标记(即 xxx.aspx 页面 html)创建多少控件。我会为此提出一些想法,我自己没有使用过它们,但可能对你有用。
aspx 页面本质上包含 xml,因此您可以将其作为 xml 文档打开并计算所有已设置 runat="server" 的标签。这将为您提供包含此属性的节点的计数,这些属性是服务器端控件
读取 aspx 文件的内容并计算特定字符串“runat=server”的实例,这将为您提供相同的结果,但方式更简单
使用 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 回答