我有一個表單來編輯員工信息。如果用戶希望爲選定的員工輸入新的電子郵件地址,則會顯示一個文本框和一個表示「添加電子郵件地址」的按鈕。非常簡單,您輸入電子郵件地址,單擊添加電子郵件地址。它回發並且該按鈕的事件處理程序對數據庫執行INSERT。回發後刷新導致再次發送相同的數據
問題: 如果按F5即回發後刷新頁面,它會導致發生,即使文本框爲空同回發。換句話說,每次你點擊F5時,該添加電子郵件地址按鈕的事件處理程序中的操作都會再次出現。如果我點擊F5十次,那麼同一個電子郵件地址會在數據庫中顯示十次。
我發現的一個建議是「在應用更改後重新指向同一頁面」。這在我們的案例中不理想的原因是它是一種相當冗長的員工數據形式---如果用戶對整個表格(如FirstName,LastName等)進行了一系列更改,在其他地方應用更改之前添加郵件,如果我們重新定向到同一頁面,其他地方的更改將會丟失。
我能想到的非常漫長的解決方案是,捕獲ViewState中的所有數據,通過重定向到同一頁面,然後在URL中使用查詢字符串來確定是否要填充來自ViewState的數據。在我走上這條路之前,我希望不是那樣,而是有一些我不知道的方法,像PostbackButDontRetainPostbackData()(我知道一廂情願的想法)。
我明白你的意思了,實際上我們會檢查電子郵件地址是否存在。這仍然會導致每次刷新的消息框不相關。我想要的是頁面刷新刷新頁面沒有以前的回發數據。 – CptSupermrkt 2012-03-16 06:30:22
@CptSupermrkt,你是指瀏覽器顯示的消息框? – 2012-03-16 06:38:02
@CptSupermrkt,請參閱最新的答案。 – 2012-03-16 06:41:37