Ответ 1
Пол Уилсон имеет очень хорошую статью: ViewState: все, что вы хотели знать
VIEWSTATE можно десериализовать с помощью класса LosFormatter.
Прошу прощения за то, что вы задали такой основной вопрос, но на веб-сайтах ASP.NET, что представляет собой поле ввода __VIEWSTATE?
Кроме того, есть ли способ вычислить его значение (на основе значений других полей формы)?
Я понимаю, что __VIEWSTATE, как следует из названия, поддерживает значения значений полей формы на веб-страницах, однако мне интересно знать, как это состояние (строка) генерируется. Если я base64_decode, любая строка __VIEWSTATE, которую я вижу, представляет собой кучу криптоватого HTML.
Есть ли способ лучше понять, что именно кодируется? Я искал прошлые вопросы, и я нашел несколько инструментов, которые могут сделать это как этот, но, к сожалению, он, похоже, не работает.
Причина, по которой я спрашиваю об этом, заключается в том, что у меня есть доступ к API веб-сервисов, который дает мне большую часть значений, с которыми мне нужно работать. Однако мне также нужно дополнительное поле, которое доступно только на последнем этапе формы. К сожалению, я уже связался с поставщиком веб-услуг, но, к сожалению, они не собираются обновлять свой API так скоро. Я надеялся, что могу предварительно заполнить начальные значения формы, используя данные веб-службы, а затем вычислить __VIEWSTATE для доступа к последнему полю, которое отображается на последнем этапе формы, это сделало бы весь процесс намного быстрее.
Не уверен, что я сделал себе достаточно ясно, хотя...
Пол Уилсон имеет очень хорошую статью: ViewState: все, что вы хотели знать
VIEWSTATE можно десериализовать с помощью класса LosFormatter.
Если вы действительно хотите это хорошо понять, см. статья Дейва Рида о ViewState.
Быстрый поиск в Google отвечает на вопрос:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
Первое предложение:
Состояние представления Microsoft® ASP.NET в в двух словах, является методом, используемым Веб-страница ASP.NET для сохранения изменений в состояние веб-формы через постбэки.
Посмотрите на biter script, опубликованный в http://forums.techarena.in/windows-software/1329157.htm.
Это script показывает, как настроить и использовать __ViewState и другие переменные .NET.
Этот script регистрируется на .NET-сайте и получает значения запасов, не переходя через браузер. Вместо того, чтобы делать это вручную, script делает это программно.
Что вы понимаете, вычислив его значение?
Предположим, что это сжатая (фактически закодированная Base64) пара ваших полей/значений формы в текстовой форме, которая сериализуется на серверных объектах, с которыми вы можете работать.
Самый простой способ сделать это в Razor - это взглянуть на это:
@{
throw new Exception();
}