2011-02-08 7 views
3

の場合、正確には、コントロールの.Viewstateプロパティからアクセスできるビューステートですか?私の観察から、最も近いイベントはPage.PreLoadイベントにあります(Page.InitCompleteでは、Viewstateはまだ利用できません)。ページライフサイクルでViewStateコレクションを利用できるのはいつですか?

ただし、IPostBackEventHandlerインターフェイスを実装するコントロールでは、LoadValue()メソッドが呼び出され、.Viewstateコレクションが使用できます(これはPage.InitCompleteの後でPage.PreLoadの前に発生します)。

誰でも、Viewstateが利用可能になったときに使用するために使用できる追加のイベントについて知っていますか?またはViewstateがロードされているかどうかを知るために使用できる任意のトリック(私的/保護/内部メンバーのリフレクションを除外しない)?

答えて

8

コントロールの.Viewstateプロパティからビューステートにアクセスできるのは正確ですか?

LoadViewStateメソッドを実行した後。

通常これは、Initフェーズの後、ロードおよびハンドラ(「OnClick」など)フェーズの前にあることを意味します。しかし、ViewStateは本当に複雑なので、ViewStateを真に理解するためにはthis excellent articleと読むことを強くお勧めします。

あなたは、これはあなたが言及トリックの種類のいずれかに置くのに適した場所になり、LoadViewStateメソッドをオーバーライドすることができますので:もちろん

protected override void LoadViewState(object savedState) 
    { 
     base.LoadViewState(savedState); 
     this.ViewStateLoaded = true; // or you could fire an event or something 
     UpdatePanelVisibility(); 
    } 

を、これはあなたがコントロールの独自の実装を使用していることを前提としませんこれは常にそうとは限りません。

+0

InitCompleteイベントとPreLoadイベント(catch-upイベントを除く)の間に発生します。[ページライフサイクル](http://msdn.microsoft.com/en-us/library/ms178472.aspx) – Greg

+0

これは優れた記事です! – adamwtiko

関連する問題