Как вы получаете доступ к Control.ViewState с динамически добавляемым подклассом Control?

StackOverflow https://stackoverflow.com/questions/130705

  •  02-07-2019
  •  | 
  •  

Вопрос

Мы создали элемент управления, который должен сохранять данные с помощью свойства ViewState класса Control.Подклассы нашего класса строго контролируют получение доступа к свойству ViewState (оно защищено в объекте Page).Мы добавляем элемент управления на страницу.Элементы управления в OnInit, а затем пытаемся установить свойство ViewState в OnPreLoad.

Когда мы декодируем и проверяем состояние просмотра страницы, наши значения не были записаны и, следовательно, недоступны для последующего извлечения.

Кто-нибудь знает, как мы можем заставить наш контроль участвовать в процессе ViewState?

Это было полезно?

Решение

Проблема заключается в непосредственном добавлении элемента управления на Страницу.К сожалению, это слишком высоко в иерархии элементов управления, чтобы участвовать в обработке ViewState форм.Если вы добавите элемент управления в фактическую коллекцию элементов управления формы ASPNet где-нибудь, то он будет успешно участвовать в LoadViewStateRecursive и SaveViewStateRecursive.

Другие советы

Попробуйте создать свой элемент управления в OnInit, затем добавьте его на Страницу.Элементы управления во время загрузки.

ViewState загружается только после OnInit, но перед OnLoad.

Вот приблизительное описание Жизненного цикла Страницы(ГрегМак) опубликовал это в ответе на мой предыдущий вопрос.

  • Инициализировать
  • LoadViewState Загрузочное состояние
  • Загрузка данных обратной передачи
  • События загрузки управления вызовами
  • Событие загрузки вызова
  • События управления вызовами
  • Предварительный просмотр управления
  • Предварительный просмотр
  • Состояние сохранения
  • Выгружать

  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top