NoNaMe :: Экспресс курс по ASP .NET. День четвертый

Изучаем механизм View state

----------------------<cut>----------------------

Каждый раз, когда происходит postback и форма возвращается на сервер, вы получаете всю информацию, которую пользователь вводил в любых тегах <input> или <form>. Это происходит благодаря тому, что ASP .NET создавая страничку после postback (об этом я рассказывал в предыдущем урока), присваивает значения свойств соответствующих элементов управления.

В обычных HTML-элементах введенная между запросами информация не сохраняется (ведь на самом деле отправка происходит только из одной формы). Поэтому приходится прибегать к помощи JavaScript, хранить данные, используя cookie, и т.п.

Описанную проблему как раз и решает механизм view state («состояние отображения» по-русски). Реализован этот механизм посредством скрытых полей в коде HTML странички, которые также отправляются методом POST во время отправки формы.
С одной стороны подобный механизм очень удобен и прозрачен для разработчика, но с другой стороны – увеличивается объем странички, что сказывается на объеме трафика, загрузка происходит медленнее. Хотя в последнее время этот фактор становится все менее существенным.

Итак, как я уже говорил, данные полей сохраняются в скрытых полях посредством сериализации. Таким образом, становится ясно, что не подлежащие сериализации объекты не могут быть сохранены в состоянии отображения, но такими объектами пользуются редко.

В HTML коде странички на клиентском компьютере подобные скрытые поля выглядят примерно так:

<input type="hidden" name="__VIEWSTATE" value="/wEPDwUKLTE2MjY5MTY1
NQ9kFgICAw9kFgICAQ8PFgIeBFRleHQFDEhlbGxvIFdvcmxkIWRkZPsbiNOyNAufEt7OvNIbVYc
GWHqf" />

Вы можете запретить данный механизм, установив свойство EnableViewState элемента в false. Небольшая часть, называемая control state все равно будет сохраняться в скрытом поле) для обеспечения функциональности элемента управления – ее мы запретить не в силах.

С точки зрения безопасности, описанный выше механизм – это дополнительная защита от подмены значений полей, а также случайного сбоя, ведь сериализованное значение хранит также контрольную сумму (CRC), проверяемую при десериализации.

Ну вот собственно и все о механизме view state.

Источник: http://nnm.ru/blogs/d00x/ekspress_kurs_po_asp_net_den_chetvertyj/

Яндекс.Метрика Rambler's Top100

© 2000–2012 NoNaMe