RegisterStartupScript on Logout page
I am trying to have a logout page where is displays a messages and then redirects to the login page. This is in ASP.net 2.0.
У меня есть это в моем Page_Load
:
ClientScript.RegisterStartupScript(typeof(Page), "pageredirect", JavascriptRedirect() );
This is my redirect function:
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
поздно зарегистрировать это?
5 ответов
Кстати: вам не нужен Javascript для перенаправления браузера на страницу через определенное время. Просто используйте простой метатег HTML в вашем <HEAD>
раздел.
<meta http-equiv="refresh" content="5; URL=login.aspx">
Число обозначает время в секундах, URL для цели.
Я не понимаю, почему это не работает, но я могу дать вам обходной путь:
объявите элемент asp:literal на странице. в pageLoad,
yourLiteral.Text = JavascriptRedirecct ();
Вместо typeof(Page) попробуйте typeof(YOURPAGECLASS) - с помощью YOURPAGECLASS задайте имя класса вашей страницы. Page_Load определенно не слишком поздно.
Возможно, что-то необычное происходит в вашем конвейере исполнения?
Когда я создаю новый.aspx и вставляю код, который вы предоставляете в своем вопросе, он работает так, как вы ожидаете (т.е. Javascript отображается клиенту).
Я бы зарегистрировал это так:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "script here", true);
Последнее "true" указывает ASP.NET визуализировать теги сценария и CDATA, чтобы вам не приходилось записывать все это.
Вы также можете поместить свой javascript в отдельный включаемый файл, чтобы вам не приходилось перекомпилировать его, если / когда вы настроите его. Если вы сделаете это, то при загрузке вашей страницы вы получите:
Page.ClientScript.RegisterClientScriptInclude("RedirectInclude", "scripts/redirect.js");
Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "JavascriptRedirect();", true);