我的方法需要以下功能:如果在ASP.NET生命周期的OnLoad
事件之前调用了该方法,则抛出异常,否则继续执行该方法。
我在想这样的事情:
if (Page.LifeCycleState < LifeCycleState.OnLoad) {
throw new InvalidPageStateException();
}
是否可以检索ASP.NET页面生命周期的状态?
最佳答案
一种方法是使用您始终在网站中使用的Basepage。这将包含一个名为PageLoadComplete的变量,您可以在PageLoad事件的末尾设置该变量。然后,您可以从您的方法中检查此变量的状态。
public abstract class BasePage : System.Web.UI.Page
{
public bool PageLoadComplete { get; private set; }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
PageLoadComplete = true;
}
}
如果要从页面外部的代码(例如UserControl)访问变量,则必须将其公开,并将页面转换为BasePage。
public partial class MyUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
BasePage basePage = this.Page as BasePage;
if (basePage != null && !basePage.PageLoadComplete)
{
throw new InvalidPageStateException();
}
}
}