Динамически добавляя элементы управления от события после страницы_инита
-
26-09-2019 - |
Вопрос
Может показаться названием DAFT, поскольку вы не должны добавлять динамические элементы управления после Page_init, если вы хотите сохранить ViewState
, но я не мог думать о лучшем способе объяснить проблему.
У меня есть класс, аналогичный следующему:
public class WebCustomForm : WebControl, IScriptControl
{
internal CustomRender Content
{
get
{
object content = this.Page.Session[this.SESSION_CONTENT_TRACKER];
return content as CustomRender;
}
private set
{
this.Page.Session[this.SESSION_CONTENT_TRACKER] = value;
}
}
}
CustomRender
Является абстрактным классом, который реализует элемент таблицы, который я использую для себя, содержащий пользовательский модуль, который я в середине письма.
На Page_Init
страницы, которая проводит WebCustomForm
, Я инициализирую контроль, передав соответствующие идентификаторы к нему. Затем на переопределении OnInit
метод WebCustomForm
Я называю создание инстанции на CustomRender
Контроль, который в настоящее время активен:
if (this.Content != null)
{
this.Content.InstantiateIn(this);
}
Проблема в том, что мой CustomRender
элементы управления нужна способность менять CustomRender
контроль над WebCustomForm
. Отказ Но когда события, которые огонь на устойчивом огне, событие страницы_инита, очевидно, уже вышло. Итак, мой вопрос, как я могу изменить содержание WebCustomForm
Из динамически добавленного контроля в нем?
То, как я вижу это, у меня есть три варианта:
- Я отделяю
CustomRender
Управляет в собственном режиме одних управлений и в основном иметь страницу ASPX на контроль и обрабатывать события сами на странице (хотя я надеялся просто сделать контроль, который я бросил на страницу и забыл о) - Я не использую события и просто продолжаю запрашивать текущую страницу, но с различными параметрами запроса
- Я возвращаюсь к чертежной доске с любыми лучшими предложениями, которые могут мне дать.
Решение 2
Я пошел с вариантом 1. Я делал уклон с переустройством и только что создал отдельные элементы управления, которые нужно сидеть на разных страницах. Я добавил свойства, чтобы сделать URL-адреса отходов и созданные свойства сеанса для передачи идентификаторов между элементами управления, поэтому мне не нужно полагаться на ProcessParams.
Другие советы
Почему бы не сделать это в мероприятии initComplete. Это после того, как страница была инициализирована, но до того, как государство будет загружено.