powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
7 сообщений из 7, страница 1 из 1
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039325
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отключён JS, __eventtarget пустой. Пользователь нажал кнопку, которая сабмитит форму, т. е. происходит PostBack. Где-то в недрах иерархии контролов внутри одного из Page_Load нужно определять, какая из кнопок была нажата, при этом OnClick ещё не выполнился.

ASP.NET 4.0.
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039651
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В пейдж лоаде:

Код: c#
1.
2.
var all = new [] { btn1.ClientID, btn2.ClientID, btn3.ClientID };
var buttonId = Request.Form.AllKeys.SingleOrDefault(key => all.Count(item => key.Replace('$', '_').Contains(item)) > 0);
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039677
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, есть и другой способ - чистый хак. Так как нет гарантии, что сабмитовый айдишник должен быть всегда последним в коллекции Request.Form.AllKeys.

Код: c#
1.
2.
3.
4.
if (Request.Form.AllKeys.Length > 0)
{
    var buttonFakeId = Request.Form.AllKeys[Request.Form.AllKeys.Length - 1];
}
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039692
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В копилку:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public  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;
}
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039704
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Принцип понятен -- обход коллекции Form и поиск ключа по вхождению ID кнопки.
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039811
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
if (!string.IsNullOrEmpty(ctrlname))
...
Рейтинг: 0 / 0
WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
    #38039913
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConst
Код: c#
1.
if (!string.IsNullOrEmpty(ctrlname))


Тоже видел тот код с инди-стайл проверкой на null и пустоту :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / WebForms: Как узнать какая кнопка вызвала PostBack до вызова обработчика OnClick?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]