Я пытаюсь загрузить пользовательский элемент управления в коде и сохранить вывод как строковую переменную. На данный момент у меня есть следующий код:
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 на элементе управления, также не запускаются никакие события.
Есть ли способ, которым я могу получить строку, содержащую содержимое моего элемента управления, все еще вызывая события элемента управления?