2008-09-22 47 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();