2013-03-02 31 views
4

Я получил эту ошибку, когда я не использую или сделать обработку на страницах, которые содержат ViewState за пару минут и перезагрузите страницу:Не удалось загрузить ViewState, когда страница содержит ViewState переменные

Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.

I получили решение, установив настройку страницы enableviewstate = false

, но после применения этой переменной переменная viewstate не работает на этой странице.

+0

может показать код. что вы хотите делать на самом деле .... –

+0

Не проблема на одной странице на каждой странице, у которой есть viewstate –

+0

enableviewstate = false делает именно то, что он говорит на жестяне, это отключает viewstate (за исключением определенного элемента управления, который может отключить) по всей странице. Он не может быть переопределен для отдельных объектов или элементов управления. Никакие объекты не могут быть сохранены в viewstate, если этот параметр установлен в false, и большинство сохраненных состояний управления будет потеряно. Само сообщение об ошибке довольно понятно, и Каербер дал хорошее описание как вероятной проблемы, так и ее решения. – pwdst

ответ

0

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

1

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

Это Becase событие Load (который обрабатывается Page_Load) обжигают после страница полностью загружена, создается то есть дети, просматривать состояние разобраны и применяется, но до клиента события, как по щелчку увольняют, страница отображается.

Переместите добавление динамических элементов управления в Page_Init и убедитесь, что они одинаковы при каждом их создании, то есть как при инициализации первой страницы, так и при инициализации страницы после обратной передачи.

Полезной ссылка ASP.NET Page Life Cycle

Смежные вопросы