ASP.Net ViewState не работает, когда Control становится Enable = False - PullRequest
0 голосов
/ 26 мая 2010

Почему, когда элемент управления содержит значение, но для него установлено значение .Enable = False, что все элементы управления становятся отключенными (это нормально), но почему ViewState не сохраняет данные в следующем посте назад? Если я получу UserControl без изменения его состояния Enable, ViewState будет работать между постами обратно.

Как мы можем отключить UserControl, чтобы все его элементы управления стали отключенными (эта часть работает), но все они ПРОДОЛЖАЮТ использовать ViewState (это не работает)?

Пояснение:

1) В aspx.cs нажмите кнопку РЕДАКТИРОВАТЬ:

myControl.Enabled = false;
//This produce to have all controls in myControl to be disabled.

2) В файле asp.cs: нажмите Сохранить, чтобы выйти из состояния РЕДАКТИРОВАНИЯ:

myControl.Enabled = true;
//This produce that all controls inside myControl are blank : no viewstate!

Другой постбэк работает, потому что мы не помещаем myControl.Enable в false.

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

Указание .Enable=False похоже на отключение на стороне сервера, а НЕ на отключение на стороне клиента. Это сделано в целях безопасности, поэтому вы действительно можете отключить элемент ввода, даже если пользователь использует некоторую хитрость на стороне клиента для его «повторного включения». Если вы хотите выполнить отключение на стороне клиента, для этого вам нужно использовать скрипт или, возможно, использовать атрибут readonly.

0 голосов
/ 26 мая 2010

Это сделано специально, если вы хотите, чтобы элемент управления использовал ViewState и все еще был отключен, то вы должны отключить элемент управления на стороне клиента. Я использую Page.ClientScript для этого и регистрирую ваш javascript для отключения элемента управления.

0 голосов
/ 26 мая 2010

Вы пробовали Page.Form.SubmitDisabledControls = true;

...