Могу ли я узнать, какие события управления будут срабатывать при обратной передаче ASP?

StackOverflow https://stackoverflow.com/questions/243120

  •  04-07-2019
  •  | 
  •  

Вопрос

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

Например, если была нажата кнопка, могу ли я выяснить это до вызова обработчика события button_click ?

Это было полезно?

Решение

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

1) __EVENTTARGET (как упомянуто выше) 2) Если ваша кнопка называется MyButt, вы увидите " MyButt = " в строке запроса. 3) Когда каждый элемент управления (например, TextBox, например) проверяет запрос, чтобы увидеть, отличается ли его значение в ViewState от отправленного, тогда " Text_Changed " будет стрелять.

Но вы можете использовать # 1 и # 2, чтобы проверить несколько мест.

Другие советы

К сожалению, запрос значения __EVENTTARGET не поможет. Часто это значение будет пустым. Обработка обратной передачи принимает некоторые решения о том, какие события вызывать, основываясь не только на целевом значении события (если оно есть), проверяя значения состояния элемента управления на значениях, публикуемых в форме (например, для текстового поля), определяет, следует ли инициировать такие события, как TextChanged. .

Кроме фактического подключения обработчика событий ко всем элементам управления, для которых вы хотите записывать события, я не думаю, что есть какой-либо способ определить его. Хотя, возможно, можно сделать в основном то, что делает фреймворк. Вам нужно будет сделать это между созданием элементов управления и восстановлением состояния представления, но до обработки опубликованных значений. Вы можете сравнить текущие контрольные значения (из viewstate) с опубликованными значениями, по сути, определяя, какие события будут запускаться.

Какова ваша цель с этим? Возможно, есть лучшее решение.

Следующее содержит искаженный идентификатор для кнопки при нажатии.

Page.Request.Form["__EVENTTARGET"]

Вот пример , который, как я считаю, отвечает на ваши вопросы. вопрос.

Другим способом было бы просто установить некоторые точки останова при отладке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top