Событие 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 ответ

Решение

Когда вы отправляете обратно, вы воссоздаете пользовательский элемент управления.

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

Другие вопросы по тегам