zoukankan      html  css  js  c++  java
  • 母版页判断登陆 及 母版页与内容页的执行顺序

    在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

  • 相关阅读:
    bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
    1691: [Usaco2007 Dec]挑剔的美食家
    CF809E Surprise me!
    「总结」狄利克雷卷积,莫比乌斯反演和杜教筛
    AT3611 Tree MST
    AT2134 Zigzag MST
    CF891C Envy
    【HNOI2018】游戏
    【HNOI2016】树
    【HNOI2016】网络
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/1650860.html
Copyright © 2011-2022 走看看