在执行页面代码之前不执行用户控制代码

User Control Code Not Execute Before Executing the Page Code

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

中写了一段代码
if(session["somesession"]==null)
{
Response.Redirect("Somepage.aspx");
}

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

我的问题是:

i was expecting to execute the usercontrol page code first before the page code,and redirect to the somesession but it's not happening. can someone please explain me, why??

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

  • 初始化

  • 加载视图状态

  • 处理回传数据

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

  • 发送回发更改通知

  • 处理回发事件

  • 预渲染

  • 保存状态

  • 渲染

  • 处置

  • 卸载

    您可以在 lifecycle for asp.net

    中查看此 link 以获取更多信息