Как сохранить значение / текстовое свойство элемента управления между обновлениями страницы? - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть два элемента управления на странице: a DropDownList и Button.Если пользователь нажимает кнопку, он получает всплывающую форму, которая, после завершения, приводит к полной перезагрузке базовой страницы, теряя значение в DropDownList.Чтобы уточнить, это обновление, а не постбэк.Я не могу изменить это, чтобы сделать это постбэком.Какой самый простой способ сохранить выбранное значение в DropDownList при обновлении этой страницы?Я не могу избежать обновления страницы, потому что данные, введенные во всплывающем окне, отражаются в другом месте на базовой странице.

Обновление

Я собрал воедино предварительное решение, котороеЯ не очень доволен: когда пользователь нажимает кнопку, я использую javascript, чтобы получить текущее значение раскрывающегося списка и передать его вместе со строкой запроса в загружаемое всплывающее окно.Когда пользователь нажимает «Сохранить» во всплывающем окне, в результате чего данные сохраняются, а затем перезагружается базовая страница, я сначала сохраняю значение строки запроса в переменной Session.При загрузке базовая страница просматривает указанную переменную Session.Если значение присутствует, оно соответствующим образом устанавливает значение раскрывающегося списка и удаляет переменную Session.

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

Противопоставление мнений, опровержение моегорешение или аргументация, с энтузиазмом приветствуются.

Заключение

В конечном счете, после того, как я описал решение для моих Милостивых Благодетелей, мы согласились на альтернативный подход: если выборсделано в DropDownList, оно должно быть сохранено перед открытием всплывающего окна.Это позволяет полностью избежать проблемы ViewState.

1 Ответ

1 голос
/ 10 ноября 2010

Для уточненного вопроса:

Решение, которое вы пробуете, звучит так, как будто оно должно работать. Это не та вещь, для которой вы хотите использовать SessionState, но здесь есть требования, которые делают ситуацию необычной.

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

Но, в принципе, поскольку значения Postback и viewstate исключены, SessionState и строки запроса - это единственная реальная возможность. О, разве вам разрешено использовать локальное хранилище HTML5? (вероятно нет)


До обновления вопроса:

Если aspnetForm отправляется обратно, значение должно сохраняться автоматически посредством значений обратной передачи. Поэтому первое, что нужно знать, - это то, что ваша форма проходит обратную передачу, или вы обновляете страницу каким-либо другим способом.

Если вы не можете отправить обратно основную форму, то, как сказал rockinthesixstring, пост Ajax может быть тем, что вам нужно.

Кроме того, если вы делаете что-то необычное, связывая источник данных с DropDownList или пытаетесь сохранить выбранное значение самостоятельно, проверьте и переосмыслите это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...