Элементы, добавляемые к объекту StateBag, отслеживаются до тех пор, пока состояние отображения не со­храняется методом SaveViewStale. Если элемент состояния не сохранен, свойство IsDirty объекта Stateltem равно True (это свойство неявно ис­пользуется методом IsItemDirty).

Содержимое набора StateBag гпячаласориялнлуетгя в строку, затем коди­руется по основанию Base64 и, наконец, записывается в скрытое поле стра­ницы, отправляемой клиенту. Состояние отображения страницы - куму­лятивное свойство, формируемое из содержимого свойства ViewStal < этой страницы и состояния отображения всех размещенных на ней элементов управления.

Проблемы безопасности

С архитектурной точки отрицать важность состояния отображе­ния нельзя, поскольку это ключ к механизму автоматического управления состоянием в ASP.NET. Тем менее оно вызывает несколько проблем, которые, судя по задаваемым вопросам, касаются в первую очередь безо­пасности и производительности. Разберемся для начала с безопасностью.

Многие разработчики сомневаются, стоит ли использовать состояние ото­бражения, поскольку оно хранится в скрытом поле и находится на клиен­те, где оно уязвимо перед злоумышленниками. Как показано на рис. 1, информацию из него можно прочитать, открыв исходный текст страницы. Хотя само по себе это не угрожает оеапиаснпс! п приложения, хранение состояния отображения на клиенте несет потенциальную угрозу, посколь­ку соответствующая информация содержится во всех Л8 Р.Мй! Т-страницлх и передается ими Web-серверу для обработки.


Рис. 1. VtewState можно увидеть в исходном тексте страницы

Хотя состояние отображения легко доступно в скрытом поле_________________ VIEW- STATE, это не открытый текст. По умолчанию на основе данных из состо- яния отображения вычисляется iiy'ivNTstrjiiiiamioHiiwii код, специфичный для компьютера и добавляемый к строке этого состояния