Определение того, какой контроль поднял постбэк - PullRequest
0 голосов
/ 21 ноября 2011

Есть идеи, как проверить, какой элемент управления в веб-приложении asp.net вызвал обратную передачу?

У меня есть несколько кнопок, и я хочу выполнить другую задачу в методе Page_Load в зависимости от того, какая кнопка была нажата.

Ответы [ 3 ]

1 голос
/ 21 ноября 2011

Вы можете получить управляющий идентификатор Postback из значения __EVENTTARGET в реквизите.params

Взгляните на следующую статью .

1 голос
/ 21 ноября 2011

Чтобы проверить, какой элемент управления вызвал обратную передачу, используйте Request.Form ["__ EVENTTARGET"].Это должно вернуть уникальный идентификатор элемента управления, который вызвал обратную передачу.

EDIT Чтобы это работало, вам нужно установить для свойства UseSubmitBehavior кнопки значение false, что заставляет его использоватьМеханизм обратной отправки Asp Net

Используйте свойство UseSubmitBehavior, чтобы указать, использует ли элемент управления Button механизм отправки в браузере клиента или механизм обратной передачи ASP.NET.По умолчанию значение этого свойства равно true, поэтому элемент управления Button использует механизм отправки браузера.Если задано значение false, каркас страницы ASP.NET добавляет клиентский сценарий на страницу для отправки формы на сервер.

Если свойство UseSubmitBehavior имеет значение false, разработчики элементов управления могут использовать метод GetPostBackEventReference для возвратасобытие обратной передачи клиента для кнопки.Строка, возвращаемая методом GetPostBackEventReference, содержит текст вызова функции на стороне клиента и может быть вставлена ​​в обработчик событий на стороне клиента.

Из MSDN

0 голосов
/ 21 ноября 2011

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

protected void Button1_Click(object sender, EventArgs e)
{
  ((System.Web.UI.WebControls.Button)sender).ID
}

параметр EventArgs содержит имя команды, которое можно использовать дляопределите, что вам нужно сделать:

if (e.CommandName == "AddToCart")
{   
    Do something
}
...