ASP.NET Как отключить повторную отправку запроса на сервер при обновлении?
Вопрос
Я разрабатываю страницу, на которой пользователи могут войти в систему и продемонстрировать некоторые функции.Я хочу, чтобы пользователь мог демонстрировать это только один раз в день.
Небольшой пример:
У меня есть веб-страница с тремя кнопками (относящимися к трем различным сценариям).При загрузке страницы я просматриваю базу данных и проверяю, выполнил ли текущий вошедший в систему пользователь какой-либо из трех доступных сценариев (через таблицу аудита).Каждая кнопка включается/отключается в зависимости от результатов.Если какие-либо кнопки включены, значит, эта демонстрация еще не запускалась.При нажатии на соответствующую кнопку запускается демо, запись записывается в таблицу аудита, и кнопка отключается.
Это работало нормально, однако я понял, что когда я обновляю страницу (и подтверждаю, что хочу повторно отправить информацию), демо-версия запускается снова.
Как я могу предотвратить это?Мне нужно разрешить пользователю запускать демо-версию только один раз!
Спасибо.
Решение
Я бы посоветовал вам изменить отправку формы, чтобы использовать Опубликовать/перенаправить/получить шаблон чтобы избежать повторной отправки, если они нажмут кнопку «Обновить» на демонстрационной странице.
Кроме того, похоже, что вы должны просто изменить код в тот момент, когда он записывает запись в таблицу аудита, чтобы проверить, существует ли запись, и если да, вернуть другой результат.Хотя я бы очень осторожно относился к такому подходу.Функциональность «обновления» браузера обычно не является чем-то, что вам следует пытаться предотвратить.Что произойдет, если пользователь нажмет «Обновить» в середине демонстрации?
Другие советы
вы можете проверить не только загрузку страницы, чтобы включить/отключить кнопки, но и события кнопок, вы можете проверить, была ли эта задача уже выполнена