2014-01-30 2 views
0

Использование asp.netЛучший способ борьбы с пользователем, нежелательный, второй щелчок в веб-приложении

У меня есть несколько пользователей, которые немного нетерпеливы. У меня есть несколько кнопок ajax, которые иногда получают второй щелчок, так как пользователь думает, что он ждал достаточно долго .... У меня есть несколько рутинных циклов для отключения службы SDK для Quickbooks, поэтому иногда пользователи могут ждать 15-20 секунд (в то время как мой значок ajax вращается ..)

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

У меня там лучший способ сделать это? Я бы почти подумал, что это общая проблема? Существуют ли какие-либо встроенные процедуры для обработки такого рода вещей, которые я, возможно, пропустил?

+0

Почему вы не настроить 'timeout' для Ajax вызова и отключить кнопку, когда он будет clicked –

+0

Я недавно подумал об отключении ... но был/ищу идеи о том, что используют другие ребята ... Я могу изменить его, чтобы отключить его, так как его немного меньше кода ... но было любопытно, есть ли что-то уже «встроенный» где-то. –

ответ

0

Я думаю, что вам следует следовать совету Мурали и просто отключить кнопку клиентской стороны до тех пор, пока не вернется вызов Ajax (успех или ошибка) или время ожидания. Отключив его, вы явно говорите пользователю: «Эта кнопка недоступна вам прямо сейчас».

  • Таким образом, вы можете избежать неоднозначности для пользователя - относительно вашего предположения о том, что пользователь «нетерпение» - вы в этом уверены? Для всех, кого мы знаем, может быть, что они предполагают, что, поскольку кнопка не отключить, что-то пошло не так, и поэтому им лучше попробовать еще раз.

  • Возможно, ваш индикатор AJAX не достаточно очевидный сам по себе - это не редкость для приложения висячего/аварийного отключения, чтобы оставить его «подождать минуту», чтобы он выглядел так, чтобы пользователь мог чувствовать, что страница только что сдалась призрак на них. Визуальная отмена кнопки решает эту проблему.

Обновление: Учитывая, что это WebForms, лучшим решением является, вероятно, чтобы проверить Sys.WebForms.PageRequestManager.isInAsyncPostBack собственности на клиенте

+0

Моя единственная проблема с отключением - это держать контроль над состоянием (будет ли контроль всегда сохранен? Разве они не были созданы при обратной передаче?). Я был обеспокоен тем, что при обратной передаче начальный отключенный элемент управления теперь будет отсутствовать, поскольку элементы управления страницы были перестроены? Этот комментарий, основанный на моем опыте с уничтожением и перестройкой пользовательских элементов и отсутствием их проводки событий. –

+0

Но не эти кнопки ajax - вы не выполняете загрузку страницы в этом случае, просто создаете фоновый вызов async? т.е. отключить os только на стороне клиента. Если вы повторно загрузите страницу, элемент управления повторно отобразится. –

+0

Прошу прощения за отсутствие углубленного знания Ajax ... :-), я/не знал, что отключение кнопки отключит ее на стороне клиента? Это обычная кнопка изображения внутри панели обновления ajax. У меня создалось впечатление, что он будет отключен, в коде, на стороне сервера ...? (физически) –

0

Сделайте это на стороне клиента в событии onlick. Напишите что-то похожее на ваш код на стороне сервера в javascript, который устанавливает время последнего клика на самой кнопке (новое свойство) и проверяет его при последующих кликах. Таким образом, вы избегаете поездки на сервер.

Смежные вопросы