2016-01-18 19 views
1

也許你們中的一些人知道這個問題,如果按F5刷新瀏覽器,表單將被重新提交。 我正在尋找一種方法來防止這種情況,和所有我發現是做在同一頁上重定向解決方案提交後防止沒有page.redirect的重新發送表單

Response.Redirect(Request.RawUrl); 

這並不工作,但我的問題是,我需要注入javascript在回發之後轉換爲佔位符,因此重定向導致此信息丟失。

PlaceHolder p1 = this.NamingContainer.Parent.FindControl("phPostScript") as PlaceHolder; 
GenerateJsTag(script,p1); 
Response.Redirect(Request.RawUrl); 

有沒有一種方法可以防止重新提交沒有重定向?

感謝

回答

1

有沒有一種方法,我可以防止重新提交不重定向?

即使有,你應該堅持提交後重定向的方法。

關於回發之後的JS,我相信你想在重定向之後刷新後看到那些JS輸出。

你可以做的是重定向到Request.RawUrl+"#someValue",然後在頁面加載(內IsPostBack不是),你可以注入再這些腳本,知道你已經發現,通過該hashkey用戶(可能是餅乾也,或查詢字符串,並不重要) - 或者顯示一條消息,如(「消息已被接受」等)或類似的東西。

2

嘗試將以下JavaScript代碼添加到您的aspx頁面。

此外,您不應該試圖禁用F5,因爲有許多用戶在那裏可能需要使用F5瀏覽您的網站期間。

//bind keydown event to method that disables F5 
$(document).on("keydown", PreventRefresh); 

function PreventRefresh(e) { 
      var code = e.which || e.keyCode; 
      if (code === 116) { 
       e.preventDefault(); 
      } 
} 
+0

禁用基本的瀏覽器功能,不建議IMO –

+0

是的,我同意你100%。這應該被認爲是標準行爲,並沒有改變。 – Sunil

+0

我添加了一條註釋以突出您所說的內容。 – Sunil

相關問題