ASP.net页面生命周期

时间:2008-10-13 06:50:22

标签: asp.net

我在我的页面中有一个ASP.net页面我将此作为我的代码隐藏文件。 首先访问页面preinit,init,load方法被调用。在回发上 调用preinit,init,load方法。

我的问题是LoadViewstate和控制状态事件(重写方法)在回发后也没有触发

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
}
protected override void LoadViewState(object savedState)
{

    base.LoadViewState(savedState);

}

protected override void LoadControlState(object savedState)
{
    base.LoadControlState(savedState);
}
protected void Page_Init(object sender, EventArgs e)
{

}
protected void Page_Load(object sender, EventArgs e)
{
  //  lblName.Text = ViewState["Test"].ToString();
}

2 个答案:

答案 0 :(得分:3)

  

这种方法主要用于   .NET Framework基础架构和   不打算直接使用   你的代码。但是,控制开发人员   可以覆盖此方法以指定   自定义服务器控件如何恢复   它的观点状态。欲获得更多信息,   请参阅ASP.NET状态管理概述。

     

LoadViewState方法恢复   已保存的视图状态信息   在以前的SaveViewState期间   请求。 WebControl类   覆盖基础LoadViewState   处理ViewState的方法,Style,   和属性属性。

另请注意

  

控制状态有时您需要   存储控制状态数据以便   控件正常工作。对于   例如,如果您已编写自定义   具有不同标签的控件   按顺序显示不同的信息   为了使该控件按预期工作,   控件需要知道哪个选项卡   往返之间选择。该   可以使用ViewState属性   这个目的,但是查看状态可以   在页面级别关闭   开发者,有效地打破你的   控制。要解决这个问题,请使用ASP.NET   页面框架公开了一个功能   ASP.NET称为控件状态。

     

ControlState属性允许您   坚持财产信息   特定于控件而不能   像ViewState一样关闭   属性。

Asp.Net StateManagement link

如果您的控件是客户服务器控件,请查看

iStateManager

有关viewstate的完整概述 - 必须搜索我的书签,请尝试

Truly understanding viewstate

答案 1 :(得分:3)

ASP.NET优化此调用,并且仅当有任何自定义数据写入视图状态时才调用LoadViewState。

如果在第一次调用中将某些内容设置为视图状态(例如ViewState [“foo”] = 42;),则将在下一个(及后续)回调中调用LoadViewState。