Событие чтения ASP.NET в Page_Init

Это почти все. Мне нужно прочитать событие серверных элементов управления, которое «произойдет» после инициализации, но мне нужно сделать это во время инициализации. Информация где-то там есть, как мне к ней добраться?

РЕДАКТИРОВАТЬ:

В частности, я пытаюсь найти, какой элемент MenuItem в меню был нажат. Это нужно сделать в Page_Init, потому что он управляет другим кодом (который должен находиться в Page_Init).


person Michael    schedule 20.05.2011    source источник


Ответы (1)


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

public static Control GetPostBackControl(Page page)
{
Control control = null;

string ctrlname = page.Request.Params.Get("__EVENTTARGET");
if (ctrlname != null && ctrlname != string.Empty)
{
    control = page.FindControl(ctrlname);
}
else
{
    foreach (string ctl in page.Request.Form)
    {
        Control c = page.FindControl(ctl);
        if (c is System.Web.UI.WebControls.Button)
        {
            control = c;
            break;
        }
    }
}
return control;
}

снято с http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx

Я успешно использовал это раньше, хотя на самом деле мне никогда не были нужны данные о событии - просто знание о событии.

person iandayman    schedule 20.05.2011
comment
Он будет где-то в запросе - когда вы говорите, что прочитаете событие управления сервером, можете ли вы подробнее рассказать о том, чего вы пытаетесь достичь, и с какими типами элементов управления / событий вы имеете дело. Спасибо. - person iandayman; 20.05.2011
comment
И ответ: Request.Params.Get (__ EVENTARGUMENT) - person Michael; 20.05.2011