2011-02-08 2 views
3

Когда точно - это состояние представления, доступное из свойства .Viewstate элемента управления? По моим наблюдениям, самое близкое событие относится к событию Page.PreLoad (на странице .InitComplete, Viewstate все еще недоступен).Когда в жизненном цикле страницы доступна коллекция ViewState?

Однако для элементов управления, реализующих интерфейс IPostBackEventHandler, вызывается метод LoadValue() и доступна коллекция .Viewstate (это происходит после Page.InitComplete и before Page.PreLoad).

Кто-нибудь знает о каких-либо дополнительных событиях, которые могут быть использованы, когда доступно ViewState? Или любые трюки (не исключая отражения на частных/защищенных/внутренних членах), которые могут быть использованы для определения того, загружен ли Viewstate или нет?

ответ

8

Когда именно состояние представления доступно из свойства .Viewstate элемента управления?

После того, как был запущен метод LoadViewState.

Обычно это означает после фазы Init и перед фазой Load and Handlers (например, OnClick). Но ViewState действительно сложна, поэтому я настоятельно рекомендую прочитать this excellent article, чтобы по-настоящему понять ViewState.

Так как вы можете переопределить метод 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 (исключая события догоняющего действия) [Жизненный цикл страницы] (http://msdn.microsoft.com/en-us/library/ms178472.aspx) – Greg

+0

Это отличная статья! – adamwtiko

Смежные вопросы