Событие кнопки разметки не запускается в ASP.NET (подробности внутри) - PullRequest
0 голосов
/ 01 сентября 2010

Ничего особенного в разметке нет:

<hr />
Add... <asp:Button ID="buttonTextSegment" runat="server" Text="Text Segment" 
    onclick="buttonTextSegment_Click" />
<hr />

Или код:

protected void buttonTextSegment_Click(object sender, EventArgs e)
{
   //never is triggered
}

Я предполагаю, что это связано с иерархией / порядком загрузки:

На английском языке: внутри страницы загрузки добавляется пользовательский элемент управления.Внутри этого пользовательского элемента управления, внутри Page_LoadComplete (это проблема !?), он добавляет еще один пользовательский элемент управления, это самый внутренний пользовательский элемент управления, содержащий кнопку разметки.

Pseudo Visually: Page-> Page_Load: динамически добавленный пользовательский элемент управления -> Page_LoadComplete: еще один динамически добавленный пользовательский элемент управления -> Разметка пользовательского элемента управления: кнопка с событием.

Нужно ли перехватывать события перед LoadComplete?(Есть ли способ заставить события все еще работать, даже если элементы управления добавлены в LoadComplete?)

1 Ответ

0 голосов
/ 01 сентября 2010

Вы должны создать пользовательские элементы управления в следующем порядке. Страница -> Page_Init: динамически добавленный пользовательский элемент управления -> Page_Init: еще один динамически добавленный пользовательский элемент управления -> разметка пользовательского элемента управления.

Если вы выполняете их в функциях Page_Load или Page_LoadComplete, то они создаются слишком поздно для обработчиков событий, поскольку обработчики событий запускаются непосредственно после события LoadControlState, которое происходит между событиями Page_Init и Page_Load.

...