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

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

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Решение

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

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

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

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

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

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

protected override void SavePageStateToPersistenceMedium(object viewState)

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

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