我对默认 ASP.NET身份验证控件的行为感到有些困惑,确切地说是其生命周期。
在我的MasterPage
中,我添加了一个LoginView
控件,它显示了漂亮的 [Login] 或 [Logout] 链接。当我登录并单击 [注销] 时,我将控件设置为执行重定向到应用程序的主页。
在内部,当点击“注销”时,会触发回发。发生以下步骤(当然还有其他步骤):
- 触发回发的页面被重新初始化
- 触发回发的页面被重新加载
- LoggingOut 事件被触发
- LoggedOut 事件被触发
- 触发回发的页面是 PreRendered
- 重定向发生
- 目标页面已加载(在我的情况下为 LoggedOut.aspx)
在大多数页面上,这都很好。但是有些页面期望一些数据被初始化以使其渲染正确发生。发生此注销回发时,数据未正确初始化,但页面仍处于 PreRendered 状态,这会导致一些...“意外行为”>_<
因此,我的问题是双重的:
- 由于页面根本不会显示,为什么会发生此渲染步骤?
- 有没有办法防止渲染发生?
非常感谢。蒂姆
PS:如果您想自己尝试一下,这里有一个小的 VS2010 示例项目,向您展示调用顺序和页面生命周期http://dl.dropbox.com/u/11764136/LoginTest.7z