У меня есть форма для редактирования информации о сотруднике. Если пользователь желает ввести новый адрес электронной почты для выбранного сотрудника, есть текстовое поле и кнопка с надписью «Добавить адрес электронной почты». Очень просто, вы вводите адрес электронной почты, нажимаете Добавить адрес электронной почты. Он выполняет обратную передачу, и обработчик событий этой кнопки выполняет INSERT для базы данных.
Проблема:
Если вы нажмете F5, чтобы обновить страницу после этой обратной передачи, произойдет та же самая обратная передача, даже если текстовое поле пустое. Другими словами, каждый раз, когда вы нажимаете F5, действия в обработчике событий для этой кнопки Добавить адрес электронной почты повторяются снова. Если я нажимаю F5 десять раз, один и тот же адрес электронной почты появляется в базе данных десять раз.
В одном предложении, которое я нашел, говорилось: «просто перенаправьте на ту же страницу после того, как вы примените свои изменения». Причина, по которой это не идеально в нашем случае, состоит в том, что это довольно длинная форма данных о сотрудниках - если пользователь вносит кучу изменений в общую форму (например, FirstName, LastName и т. Д.), А затем делает электронную Добавление почты до применения изменений в другом месте, эти изменения в другом месте будут потеряны, если мы перенаправим на ту же страницу.
Очень длинное решение, которое я могу придумать, - это захватить все данные в ViewState, перенести их через перенаправление на ту же страницу, а затем использовать строку запроса в URL, чтобы определить, хотим ли мы заполнить данные из ViewState. Прежде чем приступить к этому пути, я надеюсь, что вместо этого есть какой-то метод, который я просто не знаю, который говорит, например, PostbackButDontRetainPostbackData () (желаемое за действительное, я знаю).