Ответ 1
Rex, я подозреваю, что хорошее место для поиска - это решения, которые сжимают ViewState - они захватывают ViewState на сервере до того, как он отправляется клиенту и gzipping его. Это точно, где вы хотите быть.
Мне нужно взять представление ViewState в кодировке base64. Очевидно, что это не будет доступно до тех пор, пока в конце жизненного цикла запроса все будет в порядке.
Например, если выходные данные страницы включают в себя:
<input type="hidden" name="__VIEWSTATE"
id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" />
Мне нужен способ на стороне сервера, чтобы получить значение "/wEPDwUJODU0Njc5MD...=="
Чтобы уточнить, мне нужно это значение при отображении страницы, а не в PostBack. Например, мне нужно знать значение ViewState, которое отправляется клиенту, а не ViewState, который я получаю от них.
Rex, я подозреваю, что хорошее место для поиска - это решения, которые сжимают ViewState - они захватывают ViewState на сервере до того, как он отправляется клиенту и gzipping его. Это точно, где вы хотите быть.
См. это сообщение в блоге, где автор описывает метод переопределения поведения по умолчанию для создания ViewState и вместо этого показывает, как его сохранить объект сеанса сервера.
В ASP.NET 2.0 ViewState сохраняется потомок пользователя PageStatePersister класс. Этот класс является абстрактным классом для сохранения и загрузки ViewsState и есть два реализованных потомка этого класса в .Net Framework, названном HiddenFieldPageStatePersister и SessionPageStatePersister. По умолчанию Используется HiddenFieldPageStatePersister для сохранения/загрузки информации ViewState, но мы можем легко получить SessionPageStatePersister для работы и сохранить ViewState в объекте Session.
Хотя я не тестировал его код, он, похоже, точно показывает, что вы хотите: способ получить доступ к коду ViewState, находясь на сервере, до обратной передачи.
Я включил компрессию после аналогичных статей к опубликованным выше. Ключ к доступу к ViewState перед приложением отправляет это переопределение этого метода;
protected override void SavePageStateToPersistenceMedium(object viewState)
Вы можете вызвать базовый метод в этом переопределении, а затем добавить любую дополнительную логику, необходимую для обработки ViewState.