Подтвердить что ты не робот

Как получить значение встроенного, закодированного ViewState?

Мне нужно взять представление ViewState в кодировке base64. Очевидно, что это не будет доступно до тех пор, пока в конце жизненного цикла запроса все будет в порядке.

Например, если выходные данные страницы включают в себя:

<input type="hidden" name="__VIEWSTATE" 
  id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" />

Мне нужен способ на стороне сервера, чтобы получить значение "/wEPDwUJODU0Njc5MD...=="

Чтобы уточнить, мне нужно это значение при отображении страницы, а не в PostBack. Например, мне нужно знать значение ViewState, которое отправляется клиенту, а не ViewState, который я получаю от них.

4b9b3361

Ответ 1

Rex, я подозреваю, что хорошее место для поиска - это решения, которые сжимают ViewState - они захватывают ViewState на сервере до того, как он отправляется клиенту и gzipping его. Это точно, где вы хотите быть.

Ответ 2

См. это сообщение в блоге, где автор описывает метод переопределения поведения по умолчанию для создания ViewState и вместо этого показывает, как его сохранить объект сеанса сервера.

В ASP.NET 2.0 ViewState сохраняется потомок пользователя PageStatePersister класс. Этот класс является абстрактным классом для сохранения и загрузки ViewsState и есть два реализованных потомка этого класса в .Net Framework, названном HiddenFieldPageStatePersister и SessionPageStatePersister. По умолчанию Используется HiddenFieldPageStatePersister для сохранения/загрузки информации ViewState, но мы можем легко получить SessionPageStatePersister для работы и сохранить ViewState в объекте Session.

Хотя я не тестировал его код, он, похоже, точно показывает, что вы хотите: способ получить доступ к коду ViewState, находясь на сервере, до обратной передачи.

Ответ 3

Я включил компрессию после аналогичных статей к опубликованным выше. Ключ к доступу к ViewState перед приложением отправляет это переопределение этого метода;

protected override void SavePageStateToPersistenceMedium(object viewState)

Вы можете вызвать базовый метод в этом переопределении, а затем добавить любую дополнительную логику, необходимую для обработки ViewState.