页面中的最后一个事件仍然会影响页面的视图状态

时间:2011-11-25 07:15:03

标签: asp.net viewstate

我正在尝试创建一个强类型的视图状对象。

public class MyNewPage : ViewStatePage<MyNewPageViewStateStore>

在ViewStatePage的实现中,我正在实例化Store中的对象this.ViewState["_PageViewState"]。在派生页面中,我将使用该对象并对其进行更改。

在asp.net页面中调用的最后一个事件仍会影响View State吗?Unload吗?

1 个答案:

答案 0 :(得分:6)

在ASP.net页面生命周期中,订单进行(这是短版本):

  

Preinit - &gt; Init - &gt;加载Viewstate - &gt; 页面加载 - &gt;活动 - &gt; PreRender - &gt;   保存Viewstate - &gt;渲染 - &gt;卸载

粗体中保留对viewstate进行更改的位置。因此,您必须修改viewstate并将其保留的最后一次机会是PreRender(从技术上讲,您可以处理SaveViewState,这将是您修改viewstate并保存它的最后机会。)

MSDN:http://msdn.microsoft.com/en-us/library/ms178472.aspx#additional_page_life_cycle_considerations

处理SaveViewState:

public partial class MyPage: System.Web.UI.Page
{
    protected override object SaveViewState()
    {
        // manipulate viewstate objects here -- Last Chance
        return base.SaveViewState();
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }
}