您的位置:首页 > 其它

母版页判断登陆 及 母版页与内容页的执行顺序

2009-06-01 08:01 337 查看

在checkLogin.cs里有check方法:

public static void check(Page aPage)
{
if (aPage.Session["ok"] == null || aPage.Session["ok"].ToString() != "ok")
{
aPage.Response.Redirect("login.aspx");
}
}

在母版页里调用的正确方法:

protected void Page_Init(object sender, EventArgs e)
{
checkLogin.check(this.Page);
}

原因:

母版页和内容页的执行顺序:

1.母版页中控件的Init;
2.内容页控件的Init;
3.母版页的Init;
4.内容页的Init;
5.内容页的Load;
6.母版页的Load;
7.内容页中控件的Load;
8.内容页的PreRender;
9.母版页的PreRender;
10.母版页控件的PreRender;
11.内容页中控件的PreRender

出错方法:

1、checkLogin.check(mypage);
运行:MasterPage类转Page类出错

2、Page mypage=new Page();
checkLogin.check(mypage);
运行:System.Web.HttpException: 响应在此上下文中不可用。

3、用户自定义控件MasterPublicMethod.ascx,调用检查方法
protected void Page_Load(object sender, EventArgs e)
{
checkLogin.check(this.Page);
}
控件加入母版页:<uc1:MasterPublicMethod id="MasterPublicMethod1" runat="server"></uc1:MasterPublicMethod>
这个方法改成:在母版页的Page_Load事件里:checkLogin.check(this.Page);
运行:正常
出错原因:事件执行顺序:内容页的Page_Load事件->母版页的Page_Load事件,要在页面最开始检查有没有登录

4、母版页:
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write("母版");
checkLogin.check(this.Page);
}
内容页的Page_LoadComplete事件:
protected void Page_LoadComplete(Object sender, EventArgs e)
{
int t, bid;
//初始化自定义控件用的参数
pg = Convert.ToInt32(Request.QueryString["pg"]);
bid = Convert.ToInt32(Request.QueryString["id"]);
t = Convert.ToInt32(Request.QueryString["t"]);
switch (t)
{
case 1:
//回复
break;
case 2:
//修改回复
break;
case 3:
//隐藏
HideBook(bid);
break;
case 4:
//删除
DelBook(bid);
break;
}
}
修改原因:页面执行顺序:内容页的Page_Load->母版页的Page_Load->内容页的Page_LoadComplete
运行:自定义控件里有变量未赋值出错
出错原因:有的内容页里有自定义控件,自定义控件的Page_Load事件里有代码,自定义控件的参数在内容页的Page_LoadComplete事件里初始化
Page_Load的执行顺序:内容Page_Load->母版Page_Load->自定义控件Page_Load->内容Page_LoadComplete
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: