1

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

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

4

1 回答 1

0

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

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

于 2009-12-06T11:29:47.687 回答