代码之家  ›  专栏  ›  技术社区  ›  Rob West

为什么清除CreateChildControls中的控件

  •  1
  • Rob West  · 技术社区  · 15 年前

    ASP.NET复合控件的所有示例始终将子控件清除为CreateChildControls中的第一个操作。这是为什么?据我所知,此方法总是通过EnsureChildControls调用的,它设置一个标志来指示它已经被调用,因此不会再次调用CreateChildControls。

    基础结构的其他方面是否调用了CreateChildControls?如果是,在什么情况下?

    1 回复  |  直到 15 年前
        1
  •  0
  •   slugster Joey Cai    15 年前

    没有什么可以阻止您在控件的OnInit期间创建控件并将它们添加到控件集合中。然后,当调用CreateChildControls时,已经存在控件。这听起来可能很奇怪,但是如果您在扩展控件,您知道当控件调用基方法(如基构造函数或base.onload)时,基控件在做什么吗?

    基本上,首先调用controls.clear()是很好的实践。