您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



在母版页里判断是否登录
狼子 发表于 2006-8-5 16:07:00 阅读全文 | 回复(0) | 引用通告 | 编辑

在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);
    }

原因:

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

母版页中控件的Init->内容页控件的Init->母版页的Init->内容页的Init
->内容页的Load->母版页的Load->内容页中控件的Load
->内容页的PreRender->母版页的PreRender->母版页控件的PreRender->内容页中控件的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

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.