Что такое ViewState? Как это кодируется? Зашифровано? Кто использует ViewState?
Что такое ViewState? Как это кодируется? Зашифровано? Кто использует ViewState?
Ответ 1
Если вы действительно хотите понять ViewState (а не только то, для чего оно используется), тогда вы можете прочитать эту сказочную статью (которая Я, к сожалению, не автор:-). Остерегайтесь, однако, немного устарели, но все же очень хорошо читаем.
Ответ 2
Состояние представления - это своего рода хэш-карта (или, по крайней мере, вы можете так думать), которую ASP.NET использует для хранения всей временной информации о странице - например, какие параметры в настоящее время выбраны в каждом окне выбора, что значения находятся в каждом текстовом поле, какая панель открыта и т.д. Вы также можете использовать его для хранения произвольной информации.
Вся карта сериализована и зашифрована закодирована и хранится в скрытой переменной, которая отправляется обратно на сервер всякий раз, когда вы предпринимаете какие-либо действия на странице, требующей поездки в оба конца. Таким образом вы можете получить доступ к значениям элементов управления из кода сервера. Если вы измените любое значение в коде сервера, это изменение будет выполнено в состоянии просмотра и отправлено обратно в браузер.
Просто будьте осторожны, сколько информации вы храните в состоянии представления, хотя... он может быстро раздуваться и медленно переносить каждый раз на сервер и обратно.
Что касается шифрования, я не знаю, насколько он силен, но он не слишком легко читается человеком. Однако я бы не использовал его для конфиденциальной информации. Как указано в комментариях, он не зашифрован вообще. Просто базовая кодировка, которая легко обратима.
Ответ 3
Это скрытое поле, созданное ASP.NET, которое содержит информацию обо всех элементах управления на странице. В идеальном случае состояние представления не нужно зашифровывать, поскольку оно никогда не должно содержать конфиденциальной информации. Чтобы указать, что состояние представления должно быть зашифровано, установите атрибут проверки элемента <machineKey>
в файле machine.config
на 3DES
. Там хорошая статья в MSDN, описывающая ViewState.
Ответ 4
ViewState не шифруется по умолчанию, используя кодировку base64. Вы можете использовать viewstate, если ваша страница имеет действие с элементами управления.
Ответ 5
Позвольте мне поделиться с вами тем, что я узнал сегодня.
Что такое ViewState?
Состояние представления Microsoft® ASP.NET, в двух словах, является методом, используемым веб-страницу ASP.NET для сохранения изменений в состоянии веб-формы через обратную передачу.
View State хранит значение элементов управления страницы в виде строки, которая является хэшированный и закодированный в некоторой технологии хэширования и кодирования. Это только содержат информацию о странице и ее элементах управления
Если у меня есть что-то вроде этого:
protected void Page_Load(object sender, EventArgs e)
{
ViewState["UserName"] = "Shubh Dasgupta";
ViewState["Password"] = "IAmAPassword";
}
Состояние представления страницы по умолчанию помещается в поле скрытой формы с именем __VIEWSTATE.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwULLTE2MTY2ODcyMjkPFgQeCFVzZXJOYW1lBQ5TaHViaCBEYXNndXB0YR4IUGFzc3dvcmQFDElBbUFQYXNzd29yZGRk2/xP37hKKE9jfGYYzFjLuwpi6rHlPdXhfSspF6YRZiI=" />
Как это кодируется? Зашифровано?
ViewState по умолчанию кодируется, а не зашифровывается. Давайте возьмем предыдущее значение типа ввода, запустите следующий код:
protected void btnDecode_Click(object sender, EventArgs e)
{
//txtViewState.Text = "/wEPDwULLTE2MTY2ODcyMjkPFgQeCFVzZXJOYW1lBQ5TaHViaCBEYXNndXB0YR4IUGFzc3dvcmQFDElBbUFQYXNzd29yZGRk2/xP37hKKE9jfGYYzFjLuwpi6rHlPdXhfSspF6YRZiI="
string str = System.Text.Encoding.ASCII.GetString(Convert.FromBase64String(txtViewState.Text));
lblDecodedString.Text = str;
}
Вывод для вышеуказанного кода будет ?-1616687229UserNameShubh DasguptaPasswordIAmAPassworddd??O??J(Oc|f?X?? b???=??}+)?f"
Если вы подробно прочитали статью, о которой я упомянул ранее, вы бы придумали "Cost Of ViewState", где она четко и красиво написана:
Во всех посещениях страницы во время этапа состояния сохранения состояния класса Page собирает общее состояние просмотра для всех элементов управления в своем иерархии управления и сериализует состояние в кодировке base-64 строка. (Это строка, которая испускается в скрытом __VIEWSTATE форма.) Аналогичным образом, на обратной стороне требуется этап состояния просмотра нагрузки для десериализации сохраненных данных состояния представления и обновления соответствующих управления в иерархии управления.
Попробуйте сами. Загрузить образец
Ответ 6
ViewState - это один из методов, который использует asp.net для включения модели обратной передачи. Состояние для всех элементов управления, отмеченных runat="server"
, сохраняется в этой строке base64.
Эта статья множественного числа объясняет более подробно
Ответ 7
Состояние просмотра - это скрытый элемент, который содержит данные всех элементов управления, присутствующих на странице, в зашифрованном виде.
- Состояние просмотра загружается после Page_Init.
- Состояние представления создается после Page_PreRender.
- Просмотр информации о состоянии зашифровывается с помощью Алогорифма Base64.
Прочитайте вопросы о часто задаваемых вопросах, связанных с просмотром, здесь.