Почему моя @page enableviewstate перевешивает параметр EnableViewsate страницы в web.config? - PullRequest
7 голосов
/ 19 июня 2009

Я хочу отключить viewstate для почти всех моих страниц, и я использовал этот элемент в моем файле web.config.

На странице, которая специально использует viewstate, я использовал EnableViewState = true. Однако страница не работает, и выпадающие списки, которые зависели от состояния просмотра, не заполняются в обратной передаче.

В попытке найти шаблон я смог специально ОТКЛЮЧИТЬ состояние представления на уровне страницы, когда web.config был установлен в true, но я не могу сделать наоборот, где установлен web.config на false, и для страницы установлено значение true.

Есть идеи о чем-то еще, что может быть противоречивым?

UPDATE: Я создал новый пустой проект, чтобы поэкспериментировать с этим, и, очевидно, либо ASP.NET не работает, либо он не предназначен для такой работы. Если я включу ViewViewState = false в web.config, я не смогу снова включить его на уровне страницы. Однако, если я установлю значение true, я могу отключить его на уровне страницы.

ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ: Я получил его на работу в пустом проекте. Не совсем уверен, что изменилось, что заставило его работать внезапно. Теперь у меня для web.config установлено значение false, а для страницы установлено значение true, а страница сохраняет состояние просмотра поверх обратной передачи. Это означает, что это что-то особенное для моего более крупного и сложного проекта.

Ответы [ 2 ]

4 голосов
/ 23 июня 2009

Таким образом, ответ таков: если вы измените главную страницу на странице, не задав для свойства EnableViewState главной страницы значение EnableViewState, то вы получите поведение, описанное в вопросе.

Существует HttpModule, который меняет MasterPage на основе некоторых критериев, установленных другими частями приложения. Установив MasterPage.EnableViewState = Page.EnableViewState в свойстве OnInit главной страницы, я смог восстановить ожидаемое поведение.

0 голосов
/ 19 июня 2009

Из того, что я наблюдал в .NET 2.0, отключение ViewState на уровне страницы или приложения отключит его для всех дочерних элементов, независимо от того, что дочерние элементы указывают в своих свойствах enableviewstate.

Если вы хотите использовать viewstate даже для одного элемента управления, вы не можете установить для enableviewstate значение false на уровне страницы или приложения.

...