【问题标题】:ASP.net page life cycleASP.net 页面生命周期
【发布时间】:2008-10-13 06:50:21
【问题描述】:

我的页面中有一个 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();
}

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    此方法主要用于 .NET Framework 基础架构,并且是 不打算直接从 你的代码。但是,控制开发人员 可以覆盖这个方法来指定 自定义服务器控件如何恢复 它的视图状态。了解更多信息, 请参阅 ASP.NET 状态管理概述。

    LoadViewState 方法恢复 已保存的视图状态信息 在之前的 SaveViewState 期间 要求。 WebControl 类 覆盖基本 LoadViewState 处理 ViewState、Style、 和 Attributes 属性。

    另请注意

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

    ControlState 属性允许您 持久化属性信息 特定于控件,不能 像 ViewState 一样关闭 属性。

    Asp.Net StateManagement link

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

    iStateManager

    对于视图状态的完整概述 - 必须搜索我的书签尝试

    Truly understanding viewstate

    【讨论】:

      【解决方案2】:

      ASP.NET 优化了这个调用,只有在有任何自定义数据写入视图状态时才调用 LoadViewState。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 2011-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        相关资源
        最近更新 更多