“母版页和内容页”中的page_load事件

| 以下是母版页与内容页合并时事件发生的顺序: http://msdn.microsoft.com/zh-CN/library/dct97kc3.aspx 所以,我的问题是: 我有一个登录页面(不使用母版页),一个母版页和数百个内容页。 我在主页上检查登录会话
Session[\"loggedInUser\"]
(如果未登录,请重定向到登录页面) 因此,当我不登录时,如果键入一个内容页面的地址,它必须在母版页面中检查登录会话并重定向到登录页面,对吗?但是这里有两种情况: 如果在内容页面中,我没有使用任何与
Session[\"loggedInUser\"]
相关的内容,它将重定向到登录页面,因此,在这里可以! 第二种情况:例如,如果我使用“ 0”在内容页面中显示用户名:
UserInfo loggedInUser = (UserInfo)Session[\"loggedInUser\"];
它会在此处返回空对象,因为内容页面中的“ 4”在母版页面中的“ 4”之前被触发,因此它会引发空对象,而不是重定向到登录页面。 我在母版页上也尝试了
Page_PreInit
,但没有帮助
protected void Page_PreInit(object sender, EventArgs e)
{
    if (Session[\"loggedInUser\"] == null)
    {
        Response.Redirect(\"~/Login.aspx\");
    }
}
有什么建议吗?     
已邀请:
大概,当您说正在使用
Session[\"loggedInUser\"]
值时,然后调用
.ToString()
方法或类似的方法来显示它吗? 在这种情况下,您将需要在使用前检查空对象。在任何情况下,使用对象上的任何方法之前,最好先检查对象是否存在,因此:
if (Session[\"loggedInUser\"] != null)
{ ... }
仅当确定在没有实例化Session对象的情况下永远不会执行代码时,才可以使用不检查空引用的方法。 http://msdn.microsoft.com/zh-CN/library/03sekbw5.aspx     
最后,我想出了一个解决方案: 我像这样创建一个类
BasePage
public class BasePage : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        if (Session[\"loggedInUser\"] == null)
        {
            Response.Redirect(\"~/Login.aspx\");
        }
        base.OnLoad(e);
    }
}
在内容页面中,我改成
BasePage
,而不是从
Page
继承,它可以正常工作 感谢您的支持 美好的一天;)     
您可以在内容页面的
Page_PreRender()
中检查
Session[\"loggedInUser\"]
,而不是ѭ17,或者在母版页中检查
Page_Init()
,而不是ѭ17。我们遇到了同样的问题,并选择了母版页
Page_Init()
选项,因此我们仍可以在所有“内容”页中使用
Page_Load()
。 编辑:是18英镑而不是23英镑。     
如果在afterlogin.master的Page_Init事件中使用sessionnull(xyz)else(redirect loginpage),我在所有postloginpage会话chck中都有2个母版页(用于prelogin的页面为1,用于登录后的页面为第二,首页是独立的,退出页面继承postlogin页面)。 ......成功     

要回复问题请先登录注册