以下是母版页与内容页合并时事件发生的顺序:
http://msdn.microsoft.com/en-us/library/dct97kc3.aspx
所以,我的问题是:
我有一个登录页面(不使用母版页)、一个母版页和数百个内容页面。
我在主页面中检查登录会话Session["loggedInUser"]
(如果未登录,则重定向到登录页面)
所以,当我不登录时,如果我输入一个内容页面的地址,它必须在母版页中检查登录会话并重定向到登录页面,对吗?但这里有两种情况:
如果在内容页面中,我不使用任何与 相关的东西Session["loggedInUser"]
,它会重定向到登录页面,所以,这里没关系!
第二种情况:如果我使用Session["loggedInUser"]
在内容页面中显示用户名,例如:
UserInfo loggedInUser = (UserInfo)Session["loggedInUser"];
它将在这里返回 null 对象,因为page_load
in content 页面page_load
在 master page之前被触发,所以它会抛出 null 对象而不是重定向到登录页面。
Page_PreInit
我也在母版页中尝试过,但没有帮助
protected void Page_PreInit(object sender, EventArgs e)
{
if (Session["loggedInUser"] == null)
{
Response.Redirect("~/Login.aspx");
}
}
有什么建议吗?