У меня есть пользовательский элемент управления, который использует стандартную парадигму if(!IsPostBack){//initialize myself}
, чтобы избежать повторной инициализации во время обратных передач (поэтому, торгуя меньшим количеством обращений к БД для увеличения использования ViewState). Такой подход в большинстве случаев хорошо мне подходит, но есть одно место, где я хочу добавить этот элемент управления в иерархию элементов управления «поздно» во время обратной передачи.
Это, конечно, приводит к сбою логики инициализации и к тому, что элемент управления отображается в неинициализированном состоянии.
Какую защиту я должен использовать, чтобы определить, следует ли мне инициализировать, поскольку !IsPostBack
не обрезает ее? Я мог бы установить флаг во время LoadViewState
, но это кажется немного хакерским. Что я хотел бы найти, так это какое-то условие, которое возникает только тогда, когда элемент управления впервые добавляется в иерархию элементов управления, и ключ к нему. Существует ли такое условие?
[править] Пример псевдокода следует для содержащей страницы:
protected void Page_Prerender(object sender, EventArgs e)
{
Controls.Add(LoadControl("some_control.ascx"));
}
Есть ли способ для some_control
узнать, что он был добавлен поздно?