Выпадающий список ASP.NET - работает, когда MasterPage EnableViewState = true

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

  • MasterPage EnableViewState = False
  • Content Page ViewState = true
  • DropdownList Control ViewState = true

Не работает

Если я переключаю Masterpage EnableViewState = true, он работает, однако остальной части сайта действительно не нужно состояние просмотра, поэтому в идеале я хочу, чтобы он был включен.

Связывание данных происходит в обработчике Page_Init, и в нем есть предложение Page.IsPostBack.

Любые идеи?


person TimLeung    schedule 10.02.2009    source источник


Ответы (3)


На каждой странице есть только одно состояние просмотра (кроме состояния управления, которое хранится в состоянии просмотра). Если вы выключите его на Masterpage, он выключится на странице.

person Chris Ballance    schedule 10.02.2009
comment
Значит, установка его на самой странице не отменяет его? - person TimLeung; 11.02.2009
comment
Здесь преобладает настройка главной страницы, и фактически Viewstate отключен. - person Chris Ballance; 11.02.2009

Крис прав на 100%. Если вы хотите сохранить состояние только для этого одного элемента управления, вы можете создать подкласс DropDown и добавить состояние элемента управления. Это работает независимо от каких-либо настроек ViewState.

Вот руководство Фила Хаака по управлению состояние.

person Andrew Hare    schedule 10.02.2009

Я думаю, вы сможете получить выбранное значение раскрывающегося списка из коллекции форм (без включения ViewState), например:

if (IsPostBack)
    string selectedValue = Request.Form["Id_of_the_DropDownList"];
person M4N    schedule 10.02.2009