Событие Loadcontrol работает, но как?
Код страницы:
public partial class Default2 : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Uctest ctrl = (Uctest) this.LoadControl("Uctest.ascx");
ctrl.ID = "aaa111";
Page.Controls.Add(ctrl);
}
}
Код Ascx:
public partial class Uctest : UserControl
{
protected void btn1_Click(object sender, EventArgs e)
{
}
}
У меня есть страница и ascx. ascx содержит asp:button и asp:textbox
Моя цель - добраться до события 'btn1_Click'.
это работает. - когда я нажимаю кнопку, он идет на событие, и все в порядке.
но я не могу понять почему. потому что каждый постбэк это снова ВОССТАНОВЛЕНИЕ КОНТРОЛЯ, так как же он знает, как связать нажатое событие с предстоящим новым созданным ascx (из-за постбэка)??
1 ответ
Когда вы отправляете обратно, вы воссоздаете пользовательский элемент управления.
Это пользовательский элемент управления, содержащий метод события, и именно пользовательский элемент управления устанавливает делегирование события, поэтому имеет смысл, что каждый раз, когда вы создаете экземпляр пользовательского элемента управления, он также создает метод события и присоединяется к нему.