Вызов метода с родительской страницы после загрузки пользовательского элемента управления?

Могу ли я узнать, есть ли способ вызвать метод с дочерней страницы (.aspx) после завершения загрузки страницы пользовательского элемента управления?

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

Проще говоря

ИЗ МОЕГО ФАЙЛА .ASPX

Page_Load(object sender, EventArgs e)
{
 x = getValueFromUserControl();
}

ИЗ МОЕГО ПОЛЬЗОВАТЕЛЬСКОГО КОНТРОЛЯ

Page_Load(object sender, EventArgs e)
{ 
int x = getvalueFromDatabase();
}

getValueFromuserControl()
{
return x;
}

Поскольку жизненный цикл ASP.NET начинается с дочерней страницы (.aspx ) page_load -> пользовательский элемент управления page_load, я не могу получить значение x.

Тем не менее, в идеале я не хотел бы помещать функцию на дочернюю страницу и вызывать ее из пользовательского элемента управления, поскольку пользовательский элемент управления используется на других страницах.

Короче говоря, я хотел бы вызвать метод на моей странице .aspx после завершения page_load в моем пользовательском элементе управления. Спасибо!


person Alan    schedule 28.04.2015    source источник


Ответы (1)


Получите значение на более позднем событии страницы:

protected override void OnLoadComplete(EventArgs e) {
   x = getValueFromUserControl();
}

Если, конечно, нет особой причины, по которой вы должны получить значение Page_Load. Есть и другие, возможно, более подходящие способы справиться с этим, но, не зная, что такое x и что с ним нужно делать, трудно дать какой-либо другой совет. Например, возможно, UserControl должен запускать событие, которое обрабатывается страницей.

person Daryl Young    schedule 28.04.2015
comment
Большое спасибо, я не хотел публиковать фактический код, так как я уже понял, что должен делать x и когда его следует извлекать, чтобы упростить его. Я не думаю, что у меня есть какая-то конкретная причина, по которой я должен вызывать метод для получения x, но я попробую это сделать. Спасибо! - person Alan; 28.04.2015
comment
Привет Дэрил, спасибо за ответ. Я думаю, этот ответ приемлем, поскольку программа делает то, что должна делать. Просто из любопытства, каков пример подходящего способа справиться с этим? (например, в page_load?) - person Alan; 28.04.2015
comment
Ну, я не имел в виду, что это нужно обрабатывать в Page_Load, чтобы это было уместно. Вероятно, это потому, что вы упростили код, но казалось странным получать значение из БД при загрузке UserControl, а затем вызывать метод в UserControl со страницы контейнера, чтобы получить значение. - person Daryl Young; 28.04.2015
comment
О, этот пользовательский элемент управления используется как страница просмотра. Таким образом, с переменными в пользовательском элементе управления не выполняется никаких манипуляций или чего-либо еще. Однако этот пользовательский элемент управления должен присутствовать на других страницах, т.е. обновлять информацию. Хотя, если честно, я не могу сказать, следует ли использовать пользовательский элемент управления, я просто делаю свою работу... хахаха. Спасибо еще раз! - person Alan; 28.04.2015