Визуализация событий пользовательского контроля и управления огнем - PullRequest
0 голосов
/ 29 июня 2011

Я пытаюсь загрузить пользовательский элемент управления в коде и сохранить вывод как строковую переменную. На данный момент у меня есть следующий код:

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

WidgetControlBase widget = (WidgetControlBase)LoadControl("/controls/mycontrol.ascx");
widget.RenderControl(htw);

Проблема в том, что метод RenderControl не запускает никаких событий элемента управления, поэтому все, что я добавляю в элемент управления Page_Load, не происходит.

Я попытался загрузить элемент управления в PlaceHolder и затем отобразить PlaceHolder следующим образом:

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

WidgetControlBase widget = (WidgetControlBase)LoadControl("/controls/mycontrol.ascx");

myPlaceholder.Controls.Add(widget);
myPlaceholder.RenderControl(htw);

Однако, похоже, это делает то же самое, что и использование RenderControl direct на элементе управления, также не запускаются никакие события.

Есть ли способ, которым я могу получить строку, содержащую содержимое моего элемента управления, все еще вызывая события элемента управления?

1 Ответ

0 голосов
/ 29 июня 2011

Я думаю, что вы пытаетесь отобразить элемент управления не в той точке жизненного цикла страниц.Попробуйте переместить код из Page_Load в PreInit следующим образом:

    protected override void OnPreInit(EventArgs e)

 {
            //custom code            

           base.OnPreInit(e);
 }

Подробную информацию о жизненном цикле страницы можно найти здесь: http://www.codeasp.net/articles/asp.net/20/aspnet-page-lifecycle

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