2013-07-04 2 views
4

я заметил, что даже если я отключить ViewState на уровне приложений (<pages enableViewState="false"/>) или на уровне страницы (EnableViewState="false" в свойствах страницы), вы все еще можете найти скрытое поле для ViewState в источниках страницы:полностью вывести из строя состояние представления для веб-приложения

 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="NSe2ZpTF4OoGVDqwwtGVO+/liqfw9gUFmsPSD0n169Su3I6VwhG8xgVaSe0iTUfiPp1x0FbW9q47hkfxgDCvxjd2Z9RKo7N+WljNcEezg4Q=" /> 

Почему он все еще существует в этом случае? Что в нем хранит ASP.net?

+0

Посмотрите сами :-) http://ignatu.co.uk/ViewStateDecoder.aspx (относительно того, что он хранит) – davidkonrad

+0

Вы используете главную страницу? Это, вероятно, данные проверки для кнопок управления, чтобы избежать взлома страницы. – Aristos

+0

@davidkonrad говорит: Не удалось декодировать состояние просмотра. Ошибка была: «Сериализованные данные недействительны». – Uriil

ответ

3

Обратите внимание, что с Asp.Net 2.0 скрытое поле __VIEWSTATE не только сохраняет ViewState, но также и ControlState.

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

Для получения дополнительной информации о состоянии управления см. this page on MSDN.