【问题标题】:count of controls used in each page of an ASP.Net application?ASP.Net 应用程序的每个页面中使用的控件计数?
【发布时间】:2013-02-15 08:19:46
【问题描述】:

有没有办法找出 ASP.Net 应用程序的每个页面中使用的控件的数量? 请帮忙

【问题讨论】:

  • 为什么需要它?首先定义控件,所有源自System.Web.UI.Control?

标签: asp.net


【解决方案1】:

你为什么需要它?首先定义控件,所有从System.Web.UI.Control派生的东西?

你可以写一个递归扩展方法,它懒惰地返回所有控件,那么很简单:

protected void Page_PreRender(object sender, EventArgs e)
{
    var allControls = this.GetControlsRecursively().ToList();
}

这里有一个可能的实现:

public static class ControlExtensions
{
    public static IEnumerable<Control> GetControlsRecursively(this Control parent)
    {
        foreach (Control c in parent.Controls)
        {
            yield return c;

            if (c.HasControls())
            {
                foreach (Control control in c.GetControlsRecursively())
                {
                    yield return control;
                }
            }
        }
    }
}

【讨论】:

  • 次要:使用c.Controls.Count &gt; 0,而不是c.HasControls - 应该稍微快一点
  • @HansKesting:谢谢,进行了相应的编辑。但我认为性能不是我们应该更喜欢HasControls 的原因。递归地触摸Controls 属性将导致加载ViewState(如果尚未为所有控件完成),这可能会导致副作用。 stackoverflow.com/a/5278825/284240
猜你喜欢
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
相关资源
最近更新 更多