ASP.NET Как отключить повторную отправку запроса на сервер при обновлении? - PullRequest
1 голос
/ 16 сентября 2009

Я занимаюсь разработкой страницы, на которой пользователи могут войти и продемонстрировать некоторые функциональные возможности. Я хочу разрешить пользователю показывать это только один раз в день.

Небольшой пример:

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

Это работало нормально, однако я понял, что когда я обновляю страницу (и подтверждаю, что хочу повторно отправить информацию), демоверсия запускается снова.

Как я могу остановить это? Мне нужно только разрешить пользователю запускать демо один раз!

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2009

Я бы посоветовал вам изменить отправку формы для использования шаблона Post / Redirect / Get , чтобы избежать повторной отправки, если они нажимают кнопку refresh на демонстрационной странице.

Кроме того, похоже, что вы должны просто иметь возможность изменить код в той точке, где он записывает запись в таблицу аудита, чтобы проверить, существует ли запись, и если да, вернуть другой результат. Я бы очень осторожно относился к этому подходу. Функциональность «обновления» браузера, как правило, не является чем-то, что вы должны пытаться предотвратить. Что произойдет, если пользователь нажмет «обновить» в середине своей демонстрации?

0 голосов
/ 16 сентября 2009

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

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