我的basepage类代码如下:public class BasePage : System.Web.UI.Page
{
int i = 0;
public BasePage()
{
this.Load += new EventHandler(BasePage_Load);
} private void BasePage_Load(object sender, EventArgs e)
{
//string url = System.Web.HttpContext.Current.Request.Url.ToString();
//验证用户是否登录 HttpCookie cookie = Common.Common.GetCookie();
if (cookie == null)
{
Response.Write("<script language = javascript>window.parent.location.href='Login.aspx'</script>");
}
}这样在每个子页面再继承basepage之后,当发现没有cookie时会跳出框架(frameset)跳转到login.aspx页面,但是好像也要必须执行完子页面的page_load事件才行,有没有办法不执行完子页面的page_load事件就跳出框架并跳到login.aspx页面?谢谢。
{
int i = 0;
public BasePage()
{
this.Load += new EventHandler(BasePage_Load);
} private void BasePage_Load(object sender, EventArgs e)
{
//string url = System.Web.HttpContext.Current.Request.Url.ToString();
//验证用户是否登录 HttpCookie cookie = Common.Common.GetCookie();
if (cookie == null)
{
Response.Write("<script language = javascript>window.parent.location.href='Login.aspx'</script>");
}
}这样在每个子页面再继承basepage之后,当发现没有cookie时会跳出框架(frameset)跳转到login.aspx页面,但是好像也要必须执行完子页面的page_load事件才行,有没有办法不执行完子页面的page_load事件就跳出框架并跳到login.aspx页面?谢谢。
在你的Page_load执行里面,建议在OnInit里面。判断你的登陆对象。如果为空照你的操作输出
Response.Write("<script language = javascript>window.parent.location.href='Login.aspx'</script>");
其实这一步还没有往客户端发送,只是往输出流写入内容。
然后Context.ApplicationInstance.CompleteRequest(); //跳过所有的管线链中的事件。
Response.Flush(); //向客户端发送你的输出流
Response.End();//终止当前线程
{
//这里写判断
}
protected override void OnLoad(EventArgs e)
{
//判断登录
base.OnLoad(e);
}
如此,即可。继承的子页面中仍然可以写相应的Page_Load
你这种方法还是会要执行完子页面的page_load方法才会跳到登录页面,是不是有点不对啊?
不写Context.ApplicationInstance.CompleteRequest(); //跳过所有的管线链中的事件。
Response.Flush(); //向客户端发送你的输出流
两行代码好像也会向客户端输出脚本。
Response.End()的作用就是终止当前访问的子页面(即继承basepage类的页面)不再执行下去了,即不再执行page_load事件了。
我说是Response.Flush(); //向客户端发送你的输出流
这句代码+上句代码不需要,只需要Response.End()一句就行。