2009-12-06 68 views
1

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

是由基础设施的其他方面调用的CreateChildControls?如果是的话在什么情况下?

回答

0

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

基本上,调用Controls.Clear()首先是很好的做法。

相关问题