【问题标题】:User Control Code Not Execute Before Executing the Page Code在执行页面代码之前不执行用户控制代码
【发布时间】:2015-03-23 20:36:38
【问题描述】:

我有一个母版页,MasterPage1.master 它包含用户控件 headerheadercontentfooter。 我在 headerconten usercontrol 中写了一个代码

if(session["somesession"]==null)
{
Response.Redirect("Somepage.aspx");
}

问题是当我在没有登录的情况下打开带有母版页文件MasterPage1.master 的页面时,即session["somesession"]==null 然后它会为会话抛出空引用异常。没关系,因为我的会话没有价值,这就是它抛出的原因例外。

我的问题是:

我希望在 页面代码,并重定向到somesession,但它没有发生。 谁能解释一下,为什么?

【问题讨论】:

    标签: asp.net user-controls master-pages


    【解决方案1】:

    这是因为 Asp.net Lifecyle,总是在页面加载后加载控件,这是有道理的,因为页面初始化加载过程并递归通知其控件,并且在 asp 中的大多数事件中都会发生这种情况.net 生命周期。

    • 初始化

    • 加载视图状态

    • 处理回发数据

    • 加载 - 这里 asp.net 从页面开始创建服务器控件树。

    • 发送回发更改通知

    • 处理回发事件

    • 预渲染

    • 保存状态

    • 渲染

    • 处理

    • 卸载

      您可以在lifecycle for asp.net 中查看此链接以获取更多信息

    【讨论】:

    • 那么,您是说usercontrol's page_load 事件会在主要的page_load 事件之后执行?
    • 是的,没错,其他事件也一样,例如 Render
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2019-02-07
    相关资源
    最近更新 更多