为什么要在CreateChildControls中清除控件

发布于 2024-08-13 14:20:30 字数 208 浏览 9 评论 0原文

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

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

All of the examples of ASP.NET composite controls always clear child controls as the first action within CreateChildControls. Why is this? As I understand it this method is always called via EnsureChildControls which sets a flag to indicate that it has already been called and thus does not call CreateChildControls again.

Is CreateChildControls called by other aspects of the infrastructure? If so under what circumstances?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愛上了 2024-08-20 14:20:30

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

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

There is nothing to stop you from creating controls and adding them to the control collection during the OnInit of the control. Then when CreateChildControls is called, there is already controls present. This might sound wacky, but what if you are extending a control, do you know what that base control is doing when your control calls the base methods (like the base constructor, or the base.OnLoad)?

Basically, calling Controls.Clear() first is good practice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文