Зачем очищать элементы управления в CreateChildControls

Все примеры составных элементов управления ASP.NET всегда очищают дочерние элементы управления как первое действие в CreateChildControls. Почему это? Насколько я понимаю, этот метод всегда вызывается через EnsureChildControls, который устанавливает флаг, указывающий, что он уже был вызван, и, таким образом, больше не вызывает CreateChildControls.

Вызывается ли CreateChildControls другими аспектами инфраструктуры? Если да, то при каких обстоятельствах?

1 ответ

Решение

Ничто не мешает вам создавать элементы управления и добавлять их в коллекцию элементов управления во время включения элемента управления. Затем, когда вызывается CreateChildControls, уже присутствуют элементы управления. Это может показаться странным, но что если вы расширяете элемент управления, знаете ли вы, что делает этот базовый элемент управления, когда ваш элемент управления вызывает базовые методы (например, базовый конструктор или base.OnLoad)?

По сути, вызов Controls.Clear() в первую очередь является хорошей практикой.

Другие вопросы по тегам