2008-10-13 107 views
1

我在我的頁面中有一個ASP.net頁面我有這個作爲我的代碼背後的文件。 首先訪問頁面preinit,init,load方法被調用。在postbacks 上調用preinit,init,load方法。ASP.net頁面生命週期

我的問題是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(); 
} 

回答

3

此方法由 .NET Framework基礎主要用於射擊後並 並非是直接從 使用您的代碼。但是,控制開發人員 可以覆蓋此方法以指定 定製服務器控件如何恢復其視圖狀態。有關更多信息,請參閱 ,參見ASP.NET狀態管理概述。

LoadViewState方法恢復在先前SaveViewState 請求期間保存的 視圖狀態信息。 WebControl類 將覆蓋處理ViewState,Style, 和Attributes屬性的基礎LoadViewState 方法。

還要注意

控制狀態有時你需要 店控件狀態數據,以便 控制正常工作。對於 例如,如果您已經編寫了具有不同的標籤, 顯示不同的信息,自定義 的控制,以便 該控件按預期運行, 控制需要知道選擇往返之間的選項卡 。 ViewState屬性可以用於 這個用途,但是查看狀態可以是 在頁面級關閉 開發者,有效地打破了你的 控件。爲了解決這個問題,ASP.NET頁面框架 在 中公開了一個叫做控制狀態的功能。

的了ControlState-屬性允許您 堅持房地產信息 特定的控制,不能 關閉象ViewState這樣 財產。

Asp.Net StateManagement link

如果你的控制是客戶服務器控件來看看

iStateManager

而對於視圖狀態的完整概述 - 不得不尋找我的書籤嘗試

Truly understanding viewstate

3

ASP.NET優化此調用,並且只有在將任何自定義數據寫入視圖狀態時才調用LoadViewState。如果在第一次調用中將某些設置爲視圖狀態(例如ViewState [「foo」] = 42;),則LoadViewState將在下一個(及後續)回調中調用。