ASP.NET页面’Page_Load’在Master Page的’Page_Load’事件之前触发?

在我的母版页上,我在Page_Load事件中有一个小方法,用于检查用户是否已登录,如果没有,则将其重定向到“登录”页面。

问题是,对于我的一些页面, Page_Load事件假定记录的用户都在,并且这些事件似乎在主页面中的登录检查之前触发,这会导致错误。

有什么方法可以解决这个问题? 我可以在我的页面中使用除Page_Load之外的任何事件,这些事件会母版页之后触发吗?

您有一个丰富的Page Cycle ,可以使用大量事件。 也许您可以使用Page_Init来检查用户是否在主页面中登录。 或者在其他页面中使用Page_PreRender

如果您需要在页面事件之前在MasterPage Page_Load中发生事情,请使用Page_PreRender

 protected void Page_PreRender(object sender, EventArgs e) 

在实际页面中。

您将必须通过执行以下操作来检查用户是否已登录这些function: if (this.Page.User.Identity.IsAuthenticated == true) { .. } 。 没有什么可以假设,这是你正在经历的。 您还可以将登录检查移至Page_Init,甚至将其移至每个页面加载运行的HTTP模块; 在那里,您可以访问各种事件,包括应用程序身份validation/授权。

如果您使用的是表单身份validation,则可以使用配置文件通过authorization元素来驱动它。

              

HTH。