Сведения о вопросе

Ислам

16:03, 1st July, 2020

Теги

c#   asp.net    

Как получить значение built, encoded ViewState?

Просмотров: 397   Ответов: 3

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

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

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

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

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



  Сведения об ответе

appple

18:03, 1st July, 2020

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


  Сведения об ответе

piter

18:03, 1st July, 2020

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

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

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


  Сведения об ответе

ITSME

18:03, 1st July, 2020

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

protected override void SavePageStateToPersistenceMedium(object viewState)

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться