Как в веб-формах ASP.net определить, в какое текстовое поле кто-то нажал ввод?

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

  •  01-07-2019
  •  | 
  •  

Вопрос

Как в веб-формах ASP.net определить, в какое текстовое поле кто-то нажал ввод?

Пожалуйста, не отвечайте на Javascript.

Мне нужно обработать все это в коде, использующем VB.NET.

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

Решение

Зачем вам нужно определять, какой TextBox был нажат?Хотите узнать, какой TextBox был сфокусирован, чтобы можно было вызвать правильное событие нажатия кнопки?

Если вы хотите сделать что-то подобное, я сделал один трюк: «сгруппировал» соответствующие элементы формы на их собственной панели, а затем соответствующим образом установил свойство «DefaultButton».

Это позволяет мне использовать «Поиск по имени», «Поиск по отделу», «Поиск по идентификатору» и т. д.Комбинация текстового поля и кнопки в одной форме позволяет пользователю вводить параметр запроса, нажимать Enter и вызывать правильный метод поиска в коде.

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

Я подозреваю, что это невозможно сделать без javascript - когда вы нажимаете Enter, браузер отправляет форму - он не отправляет, какое поле было в фокусе.Поэтому, если вы не используете JS для добавления этой информации в отправляемую форму, вам не повезло.

Без использования Javascript вы просто не сможете.Эта информация не передается из клиентского браузера на сервер.

Насколько я знаю, серверный сценарий не может это обнаружить.Он просто не отправляется на сервер.Это должно быть сделано на стороне клиента (т.с Javascript), а затем отправляется на сервер.

Я решил эту проблему для поиска на одном сайте, посмотрев на объект Request.Form на стороне сервера, чтобы узнать, имеет ли поле поиска значение.Я сделал это в базовом классе, от которого наследуются все мои страницы (или базовый класс главной страницы).Если у него есть значение, велика вероятность, что кто-то что-то ввел и нажал «Ввод», и поэтому я занялся поиском.

В обработчике событий объект «источник» (первый параметр обработчика событий) — это объект, вызывающий событие.Введите его в кнопку и получите имя или используйте отражение, чтобы получить информацию из нетипизированного объекта.

Кроме того, если элемент управления является дочерним элементом веб-элемента управления, который не вызывает собственных событий (просто говоря...), вы можете использовать OnBubbleEvent, чтобы определить, что происходит.OnBubbleEvent также имеет параметр «источник», который вы можете ввести или использовать для отражения.

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