Как в веб-формах ASP.net определить, в какое текстовое поле кто-то нажал ввод?
Вопрос
Как в веб-формах ASP.net определить, в какое текстовое поле кто-то нажал ввод?
Пожалуйста, не отвечайте на Javascript.
Мне нужно обработать все это в коде, использующем VB.NET.
Решение
Зачем вам нужно определять, какой TextBox был нажат?Хотите узнать, какой TextBox был сфокусирован, чтобы можно было вызвать правильное событие нажатия кнопки?
Если вы хотите сделать что-то подобное, я сделал один трюк: «сгруппировал» соответствующие элементы формы на их собственной панели, а затем соответствующим образом установил свойство «DefaultButton».
Это позволяет мне использовать «Поиск по имени», «Поиск по отделу», «Поиск по идентификатору» и т. д.Комбинация текстового поля и кнопки в одной форме позволяет пользователю вводить параметр запроса, нажимать Enter и вызывать правильный метод поиска в коде.
Другие советы
Я подозреваю, что это невозможно сделать без javascript - когда вы нажимаете Enter, браузер отправляет форму - он не отправляет, какое поле было в фокусе.Поэтому, если вы не используете JS для добавления этой информации в отправляемую форму, вам не повезло.
Без использования Javascript вы просто не сможете.Эта информация не передается из клиентского браузера на сервер.
Насколько я знаю, серверный сценарий не может это обнаружить.Он просто не отправляется на сервер.Это должно быть сделано на стороне клиента (т.с Javascript), а затем отправляется на сервер.
Я решил эту проблему для поиска на одном сайте, посмотрев на объект Request.Form на стороне сервера, чтобы узнать, имеет ли поле поиска значение.Я сделал это в базовом классе, от которого наследуются все мои страницы (или базовый класс главной страницы).Если у него есть значение, велика вероятность, что кто-то что-то ввел и нажал «Ввод», и поэтому я занялся поиском.
В обработчике событий объект «источник» (первый параметр обработчика событий) — это объект, вызывающий событие.Введите его в кнопку и получите имя или используйте отражение, чтобы получить информацию из нетипизированного объекта.
Кроме того, если элемент управления является дочерним элементом веб-элемента управления, который не вызывает собственных событий (просто говоря...), вы можете использовать OnBubbleEvent, чтобы определить, что происходит.OnBubbleEvent также имеет параметр «источник», который вы можете ввести или использовать для отражения.