Почему мой @page enableviewstate не переопределяет EnableViewsate страницы в web.config?

StackOverflow https://stackoverflow.com/questions/1015742

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

Есть какие-нибудь идеи по поводу чего-то еще, что может противоречить друг другу?

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top