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

ari*_*hma 2 asp.net viewstate

我正在尝试创建一个强类型的viewstate对象.

public class MyNewPage : ViewStatePage<MyNewPageViewStateStore>
Run Code Online (Sandbox Code Playgroud)

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

什么是在asp.net页面中调用的最后一个事件仍然可以影响View State?Unload吗?

Gar*_*y.S 6

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

Preinit - > Init - >加载Viewstate - > 页面加载 - >事件 - > PreRender - >保存Viewstate - > Render - > Unload

视图状态更改的位置以粗体显示.因此,您必须修改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)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)