Что делает __VIEWSTATE?

Прошу прощения за то, что вы задали такой основной вопрос, но на веб-сайтах ASP.NET, что представляет собой поле ввода __VIEWSTATE?

Кроме того, есть ли способ вычислить его значение (на основе значений других полей формы)?

ИЗМЕНИТЬ

Я понимаю, что __VIEWSTATE, как следует из названия, поддерживает значения значений полей формы на веб-страницах, однако мне интересно знать, как это состояние (строка) генерируется. Если я base64_decode, любая строка __VIEWSTATE, которую я вижу, представляет собой кучу криптоватого HTML.

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

Причина, по которой я спрашиваю об этом, заключается в том, что у меня есть доступ к API веб-сервисов, который дает мне большую часть значений, с которыми мне нужно работать. Однако мне также нужно дополнительное поле, которое доступно только на последнем этапе формы. К сожалению, я уже связался с поставщиком веб-услуг, но, к сожалению, они не собираются обновлять свой API так скоро. Я надеялся, что могу предварительно заполнить начальные значения формы, используя данные веб-службы, а затем вычислить __VIEWSTATE для доступа к последнему полю, которое отображается на последнем этапе формы, это сделало бы весь процесс намного быстрее.

Не уверен, что я сделал себе достаточно ясно, хотя...

Ответы

Ответ 3

Быстрый поиск в Google отвечает на вопрос:

http://msdn.microsoft.com/en-us/library/ms972976.aspx

Первое предложение:

Состояние представления Microsoft® ASP.NET в в двух словах, является методом, используемым Веб-страница ASP.NET для сохранения изменений в состояние веб-формы через постбэки.

Ответ 4

Посмотрите на biter script, опубликованный в http://forums.techarena.in/windows-software/1329157.htm.

Это script показывает, как настроить и использовать __ViewState и другие переменные .NET.

Этот script регистрируется на .NET-сайте и получает значения запасов, не переходя через браузер. Вместо того, чтобы делать это вручную, script делает это программно.

Ответ 5

Что вы понимаете, вычислив его значение?

Предположим, что это сжатая (фактически закодированная Base64) пара ваших полей/значений формы в текстовой форме, которая сериализуется на серверных объектах, с которыми вы можете работать.

Ответ 6

Самый простой способ сделать это в Razor - это взглянуть на это:

@{
    throw new Exception();
}