asp.net сохранить текстовое поле при перенаправлении - PullRequest
2 голосов
/ 16 июля 2010

Я новичок в ASP.net и пытаюсь сохранить состояние некоторых текстовых полей при перенаправлении.У меня есть интерфейс панели инструментов с детализацией.На главной странице панели инструментов есть параметр диапазона дат (текстовое поле для даты начала и окончания) для отображаемой информации, и мне нужно сохранить диапазон дат, выбранный пользователем.Я знаю, что могу поместить информацию в переменную сеанса для использования на странице, на которую я перенаправлен, но когда я нажимаю кнопку «вернуться» на странице развертки, она возвращается на главную страницу панели инструментов, и значение текстового поля теряется.,Я также попытался сохранить состояние просмотра, но не смог заставить это работать.Каков наилучший подход к решению этой проблемы?

edit: В случае, если это имеет значение, я на самом деле использую jQuery $(location).attr('href', url); для перенаправления, потому что некоторые из объектов диаграммы, которые я использую, включают html или гиперссылки aspв IE.

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Вы на правильном пути.

На вашей странице перенаправления вы проверяете переменную сеанса, верно?

Почему бы не проверить это на исходной странице?

т.е .: Исходная страница Нагрузка:

IF NOT String.isnullorempty(Session("date")) THEN
   me.start_date.selectedvalue = Session("date")
END IF
0 голосов
/ 16 июля 2010

Итак, чтобы прояснить ваш вопрос: вам нужно сохранить выбранные значения текстовых полей «Дата», когда пользователь возвращается на страницу.

Причина, по которой ViewState не работает, заключается в том, что вы ушли отстраница.ViewState переносится или «запоминается», вставляя его как данные в кодировке Base 64 на странице, поэтому, как только вы покидаете страницу, он исчезает навсегда.

Что вам нужно сделать, это сохранить данные в Sessionотставить.Затем в обработчике событий Page.Load страницы панели мониторинга вы проверяете наличие сохраненной информации в сеансе, а если она там есть, заполняете ее обратно в текстовые поля, в противном случае используйте значение по умолчанию.

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

public class MySessionKeys 
{
    public static string DateStarted = Guid.NewGuid().ToString();

    public static string DateFinished = Guid.NewGuid().ToString();
}

и на странице aspx:

protected void Page_Loaded(object sender, EventArgs e) 
{
    Session[MySessionKeys.DateStarted] = myDateStartedTextBox.Text;
}
...