2009-07-30 29 views
139

如何在ASP.NET中刷新頁面? (讓它通過代碼重新加載)如何刷新ASP.NET中的頁面? (讓它通過代碼重新加載)

我寧願不使用Response.Redirect(),因爲我不知道頁面是否處於打開狀態,因爲它位於SharePoint內部的SharePoint控件中的用戶控件內。

+4

爲什麼不使用JavaScript? – 2009-07-30 13:14:06

+2

我不是OP,但其中一個原因可能是因爲javascript可能被禁用 – 2009-07-30 13:21:21

+11

ASP.NET依賴於javascript,所以如果用戶禁用javascript,則會出現更大的問題... – jrummell 2009-07-30 13:25:39

回答

41

將頁面呈現給客戶端後,只有兩種強制刷新的方法。 一種是使用Javascript

setTimeout("location.reload(true);", timeout); 

二是meta標籤:

<meta http-equiv="refresh" content="600"> 

您可以設置刷新的時間間隔在服務器端。

32

試試這個:

Response.Redirect(Request.Url.AbsoluteUri); 
+1

它只會發送重定向頁面而不是頁面,導致一個循環,當瀏覽器看到它永遠不會得到一個真實的頁面時,瀏覽器將停止循環... – Guffa 2009-07-30 13:24:55

+0

@Guffa依賴於使用重定向的上下文。如果它被用在基於動作或條件特別調用的動作/代碼塊中,那麼每次迭代只會觸發一次,並且如果編碼正確地隔離。 – 2015-11-27 16:10:39

6

如果你不想做一個完整的頁面刷新,然後怎麼樣包裝要刷新的UpdatePanel的內部,然後做一個異步回送什麼?

2

你不能那樣做。如果您使用重定向(或任何其他服務器技術),則永遠不會將實際頁面發送到瀏覽器,而只發送重定向頁面。

你必須要麼使用元標記或JavaScript要做到這一點,這樣就可以重新載入頁面已經顯示了一段時間後:

ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true); 
12

使用JavaScript的location.reload()方法。

<script type="text/javascript"> 
    function reloadPage() 
    { 
    window.location.reload() 
    } 
</script> 
357

在我的用戶控件,數據更新後,我做的:

Response.Redirect(Request.RawUrl);  

這就確保了重新加載頁面,並能正常工作從用戶控制。您使用RawURL而不是Request.Url.AbsoluteUri來保存可能包含在請求中的任何GET參數。

您可能不想使用:__doPostBack,因爲許多aspx頁面在執行回發時的行爲不同。

1
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>"); 
2

在你page_load,補充一點:

Response.CacheControl = "no-cache"; 
Response.AddHeader("Pragma", "no-cache"); 
Response.Expires = -1; 
1

您可以使用2種方式爲解決這個問題: 1)head標籤

<head> 
<meta http-equiv="refresh" content="600"> 
</head> 

2後)如果您的網頁沒有標籤標籤您必須使用Javascript才能實施

<script type="text/javascript"> 
    function RefreshPage() 
    { 
    window.location.reload() 
    } 
</script> 

我的聯繫方式:

http://gola.vn

34

這可能是晚了,但我希望它可以幫助別人誰是尋找答案。

您可以使用下面的行做到這一點:

Server.TransferRequest(Request.Url.AbsolutePath, false); 

儘量避免使用Response.Redirect,因爲它增加了過程的步驟。它實際上做的是:

  1. 發回的頁面重定向頭
  2. 將瀏覽器重定向到目標網址。

正如你所看到的,同樣的結果需要2次旅行,而不是1次旅行。

3

我個人需要確保頁面保持狀態,所以所有的文本框和其他輸入字段保留其值。通過執行元刷新就像一個新的職位,IsPostBack總是假的,所以你的控件再次處於初始化狀態。要保留狀態,請將其放在Page_Load()的末尾。在頁面上創建一個隱藏的按鈕,其中包含事件butRefresh_Click(...)。此代碼在頁面上設置一個計時器來觸發回發,就像用戶單擊刷新按鈕本身一樣。所有狀態和會話都保留。請享用! (PS你可能需要把指令在@Page頭EnableEventValidation =「假」,如果你在回發收到錯誤。

//tell the browser to post back again in 5 seconds while keeping state of all controls 
ClientScript.RegisterClientScriptBlock(this.GetType(), "refresh", "<script>setTimeout(function(){ " + ClientScript.GetPostBackClientHyperlink(butRefresh, "refresh") + " },5000);</script>"); 
6

有各種不同的方法刷新頁面像asp.net ...

Java腳本

function reloadPage() 
{ 
    window.location.reload() 
} 

代碼隱藏

Response.Redirect(Request.RawUrl) 

Meta標籤

<meta http-equiv="refresh" content="600"></meta> 

頁面重定向

Response.Redirect("~/default.aspx"); // Or whatever your page url 
1

,我可以做頁面刷新的唯一正確途徑是通過JavaScript,許多頂級.NET答案的失敗對我來說。

Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>"); 

將上面的代碼放在按鈕單擊事件或任何你想強制頁面刷新的地方。

相關問題