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

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

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

Ответы [ 4 ]

2 голосов
/ 30 октября 2008

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

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

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

2 голосов
/ 30 октября 2008

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

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

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

0 голосов
/ 29 октября 2008

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

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

0 голосов
/ 28 октября 2008

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

Page.Request.Form["__EVENTTARGET"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...