2008-09-22 46 views
0

我想要一個註銷頁面,其中顯示一條消息,然後重定向到登錄頁面。這是在ASP.net 2.0中。RegisterStartupScript在註銷頁面

我有這個在我Page_Load

ClientScript.RegisterStartupScript(typeof(Page), "pageredirect", JavascriptRedirect()); 

這是我的重定向功能:

private string JavascriptRedirect() 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("<script type=\"text/javascript\" language=\"javascript\">"); 
    sb.Append("var x = 5;"); 
    sb.Append("var y = 1;"); 
    sb.Append("function startClock(){"); 
    sb.Append("x = x-y;"); 
    sb.Append("t=setTimeout(\"startClock()\", 1000);"); 
    sb.Append("if(x==0){"); 
    sb.Append("window.location='login.aspx';"); 
    sb.Append("clearTimeout(t);"); 
    sb.Append(" }"); 
    sb.Append(" }"); 
    sb.Append("startClock();"); 
    sb.Append("</script>"); 
    return sb.ToString(); 
} 

當我測試中有我得到的註銷頁面不需要JavaScript。任何人都會對發生的事情有個想法。 Page_Load是遲到了嗎?

回答

1

順便說一句:在一段時間之後,您不需要Javascript將瀏覽器重定向到頁面。只需在您的<HEAD>部分使用純HTML元標記即可。

<meta http-equiv="refresh" content="5; URL=login.aspx"> 

該數字表示以秒爲單位的時間,即目標的URL。

0

而不是typeof(Page),嘗試typeof(YOURPAGECLASS) - 用YOURPAGECLASS設置頁面類名的名稱。 Page_Load絕對不會太晚。

0

也許在你的執行管道中有什麼不尋常的事情發生?

當我創建一個新的.aspx文件並粘貼您提供的代碼時,它可以像您期望的那樣工作(即Javascript呈現給客戶端)。

0

謹以此進行註冊:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "script here", true); 

最後的「真」告訴ASP.NET來呈現腳本標記和CDATA所以你不必給它的所有寫出來的。

您可能還希望將您的javascript放在單獨的包含文件中,以便在調整時不必重新編譯。如果你這樣做,那麼在你的頁面加載你必須:

Page.ClientScript.RegisterClientScriptInclude("RedirectInclude", "scripts/redirect.js"); 
Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "JavascriptRedirect();", true); 
0

我不undesrtand爲什麼它不工作,但我可以給你一個解決辦法:

聲明一個asp:字面項目在頁面中。 in pageLoad,

yourLiteral.Text = JavascriptRedirecct();