Когда «должен» я использую asp.net CreateChildControls ()? - PullRequest
4 голосов
/ 01 октября 2009

Хотя кажется, что «правильный» способ сделать серверный элемент управления - это создать все дочерние элементы управления внутри вызова CreateChildControls. Но так как трудно знать, когда он будет вызываться (что является идеей оптимизации), я вижу, что большинство наших разработчиков создается в OnInit или OnLoad. И это работает в 99% случаев.

Есть ли случаи, когда мы должны использовать CreateChildControls?

Ответы [ 4 ]

4 голосов
/ 01 октября 2009

Вы должны ВСЕГДА создавать свои дочерние элементы управления в CreateChildControls. Это подходящее время в жизненном цикле для инициализации и добавления их в дерево управления. Одна из причин этого заключается в том, что много раз вызывается метод EnsureChildContols, который затем при необходимости вызывает CreateChildControls. Лучшая практика, просто сделай это.

2 голосов
/ 01 октября 2009

Чтение Жизненный цикл выполнения управления

Метод CreateChildControls вызывается всякий раз, когда каркас страницы ASP.NET должен создать дерево элементов управления, и этот вызов метода не ограничен определенной фазой в жизненном цикле элемента управления. Например, CreateChildControls может быть вызван при загрузке страницы, во время связывания данных или во время рендеринга .

0 голосов
/ 01 октября 2009

Вы будете создавать свои элементы управления в Init или Load, пока не напишите элемент управления, который должен воссоздать элементы управления.

Я считаю, что всегда лучше создать элементы управления в CreateChildControls, а затем использовать EnsureChildControls, чтобы убедиться, что они создаются, когда они вам нужны. Это дает вам возможность разрушать элементы управления, устанавливая для ChildControlsCreated значение false и повторно создавать их при необходимости.

0 голосов
/ 01 октября 2009

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

Что вы думаете о том, что создание элементов управления в OnInit более производительно, чем во время CreateChildControls ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...