2010-03-31 65 views
0

我有插入頁面 - 數據插入正確與所有驗證。但主要問題是插入後,如果有人點擊Internet Explorer瀏覽器上的刷新按鈕,數據再次插入相同的數據插入在提交按鈕。刷新瀏覽器的數據正在插入 - 幫助!

感謝, Smartdev

+0

可能PLZ解釋一點細節?可能會發布一些代碼(.aspx和後端) – 2010-03-31 18:02:11

+0

它是一個簡單的插入代碼,包含五個文本框和下拉菜單,一旦用戶單擊提交按鈕數據被插入並且im爲用戶清除文本框再次輸入數據。但是一旦插入數據並清除了文本框,如果用戶在瀏覽器上單擊刷新,則數據將再次插入到數據庫中。這是由用戶插入的相同數據,當我檢查數據庫時,它顯示的數據與時間相同秒的差異。 我dnt有任何代碼 - 它只是插入方法存儲過程和參數im從後面的代碼傳遞。 謝謝 – SmartDev 2010-03-31 18:25:52

回答

1

做一個重定向你成功地執行插入,這不應該發生後。否則,你將不得不自己執行一些過程,以確保它不會發生(可能使用狀態管理來設置「已保存」標誌或其他東西)。

+0

+1。重定向是迄今爲止最簡單的方法。 – David 2010-03-31 18:03:15

+0

嗨大衛, 我不能這樣做,因爲im清除文本框後提交另一個條目。有沒有其他方法 謝謝, Smartdev – SmartDev 2010-03-31 18:27:09

+0

重定向到同一頁面。 – Jaxidian 2010-03-31 18:36:03

0

重定向會起作用。你可以使用這樣的東西:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(dataWasInserted) 
     Response.Redirect("~/TheSamePage.aspx"); 
} 
+0

嗨國際象棋, 我不能這樣做,因爲im清除文本框後提交另一個條目提交。有沒有其他方法 – SmartDev 2010-03-31 18:26:39

+0

看到我的其他答案,添加邏輯到您的存儲過程。 – ChessWhiz 2010-03-31 19:20:45

0

你可以添加代碼到你的存儲過程,在插入之前檢查數據庫。如果您試圖避免的數據已經存在,請不要執行插入。

如果您確實想允許有意重複數據,但不是通過意外刷新,則可以使用時間戳來幫助確定它是否是最近要阻止的重複項。不過,希望你根本不需要數據庫中的重複數據,所以我不推薦這種方法。

0

尊敬的用戶,您必須在上一頁使用下面的代碼,以避免後退按鈕的工作。

example... 

suppose your page 1 is=x.jsp and page 2 is y.jsp 

to restrict x.jsp when u click on y.jsp back button you have to add this code in x.jsp 

<SCRIPT type="text/javascript"> 
    window.history.forward(); 
    function noBack() { window.history.forward(); } 
</SCRIPT> 
</HEAD> 
<BODY onload="noBack();" 
    onpageshow="if (event.persisted) noBack();" onunload="">