Может показаться глупым заголовком, поскольку вам не следует добавлять динамические элементы управления после 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
- это абстрактный класс, который реализует ITemplate, который я использую для самостоятельного содержания модуля CustomForms, который находится в процессе написания.
На Page_Init
страницы, содержащей WebCustomForm
, я инициализирую элемент управления, передавая ему соответствующие идентификаторы. Затем в переопределенном методе OnInit
WebCustomForm
я вызываю Instantiate для элемента управления CustomRender
, который в данный момент активен:
if (this.Content != null)
{
this.Content.InstantiateIn(this);
}
Проблема в том, что моим CustomRender
элементам управления требуется возможность изменить CustomRender
элемент управления WebCustomForm
. Но когда срабатывают события, которые запускаются в CustomRender, событие Page_Init, очевидно, уже прошло. Итак, мой вопрос: как я могу изменить содержимое WebCustomForm
из динамически добавленного элемента управления внутри него?
Как я вижу, у меня есть три варианта:
- Я разделяю
CustomRender
элементы управления
в одиночку
контроль и в основном имеют aspx
страница на элемент управления и обрабатывать
События себя на странице (хотя
Я надеялся просто сделать контроль
Я захожу на страницу и забываю про)
- Я не использую события и просто продолжаю
запрашивая текущую страницу, но
с разными параметрами запроса
- Я возвращаюсь к чертежной доске с
любые лучшие предложения кто-нибудь может
дай мне.