2015-02-07 78 views
1

我只是試圖先顯示消息,然後將用戶重定向到另一頁面。我遇到的問題是,它不是首先顯示消息,而是以某種方式重定向頁面。 這裏是我的代碼使用C#顯示消息後重定向頁面

if (some condition == true) 
{ 
    string message = string.Empty; 
    message = "Success. Please check your email. Thanks."; 
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true); 

    Response.Redirect("Login.aspx");  
} 

回答

2

最好的方式來實現你的結果是與Javascript(客戶端)異步執行它。

如果你想做到這一點的服務器端,這裏有一個例子:

protected void btnRedirect_Click(object sender, EventArgs e) 
{ 
    string message = "You will now be redirected to YOUR Page."; 
    string url = "http://www.yourpage.com/"; 
    string script = "window.onload = function(){ alert('"; 
    script += message; 
    script += "');"; 
    script += "window.location = '"; 
    script += url; 
    script += "'; }"; 
    ClientScript.RegisterStartupScript(this.GetType(), "Redirect", script, true); 
} 
0

那是因爲你的代碼從服務器端重定向,甚至在此之前,腳本到達客戶端的瀏覽器。您應該刪除該重定向並修改您的JavaScript,以便在顯示該消息之後在客戶端完成重定向。

編輯:你一定要檢查ASP.NET page life cycle

0

這裏的問題是,你正在做兩件事情:

  1. 添加腳本以發送到呈現一個JavaScript警告瀏覽器的輸出。使用Response.Redirect觸發HTTP 302 redirect

後者(2)意味着(1)實際上沒有做任何事情。爲了達到你想要的這裏,您可以發送腳本使用下來一樣的RegisterStartupScript:

alert('Message'); 
window.location.href = 'login.aspx'; 

所以你刪除Response.Redirect線及用途:

ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "'); window.location.href = 'login.aspx'", true); 
0

您可以使用C#中的計時器。只需給用戶足夠的時間閱讀該消息,然後將用戶重定向到您想要的頁面。

此線程在使用計時器方面有一個很好的例子:how to use Timer in C#

相關問題