RegisterClientScriptBlock、RegisterStartupScript、Response.Write这三个的别区网上到处都是,我就不废话了。
ErrorPage.aspx
----------------------------------------------------------------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ErrorPage.aspx.cs" Inherits="WebUI.ErrorPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<input id="Button1" type="button" value="button" />
</form>
</body>
</html>
ErrorPage.aspx.cs
-------------------------------------------------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
//弹出提示框,并跳转到指定页面
//this.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('登陆超时,请重新登录系统!');parent.window.location.href='index.aspx'", true);
//this.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('登陆超时,请重新登录系统!');parent.window.location.href='index.aspx'", true);
HttpContext.Current.Response.Write("<script> alert('登陆超时,请重新登录系统!');parent.window.location.href='index.aspx' </script>");
Response.Flush();
Response.End();//测试Response.End()
}
-------------------------------------------------------------------------------------------------
上面的三种写js的方法
分析:
执行RegisterStartupScript、RegisterClientScriptBlock 发送到客户端的html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312"></HEAD>
<BODY></BODY></HTML>
执行Response.Write发送到客户端的html:
<script> alert('登陆超时,请重新登录系统!');parent.window.location.href='index.aspx' </script>
结果:
只能Response.Write可以执行正确结果,
这和 Response.End();方法有关系,具体什么原因呢?
小弟不才望高手解答.....