Передача данных между страницами asp.net - PullRequest
4 голосов
/ 14 апреля 2010

Мне интересно мнение о том, как лучше всего передавать множество значений между НЕСКОЛЬКИМИ страницами. Я думал о сохранении значений в базе данных, используя context.Items [] или Session []. Я не уверен, какой метод самый лучший. Я передаю, вероятно, около 40 переменных. Это будет во время процесса проверки, поэтому они должны сохраняться в течение жизненного цикла пользователей. Пользователь не меняет значения после их ввода в первый раз. Значения будут такими, как адрес для выставления счета, имя и фамилия и т. Д.

Ответы [ 4 ]

4 голосов
/ 14 апреля 2010

Сессия, вероятно, самая эффективная. Однако, если время сеанса истекло или потеряно по любой другой причине, все записи будут потеряны. Поэтому, если настойчивость важнее, вы можете сохранить ее в БД.

3 голосов
/ 14 апреля 2010

Может быть Опция кросс-страницы опция?

Другим вариантом может быть метод Server.Transfer вместе со свойством Context.Items или Form.

В этом случае любые опубликованные переменные формы и параметры строки запроса доступны для второго / третьего / и т. Д. страница также.

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

Следует помнить, что если первая страница что-то написала Буфер ответов, и вы не очищаете это, то любой выход со второго страница будет добавлена ​​к выводу первый. Это часто является причиной странное поведение, когда кажется, что страница возвращает две разные страницы. Кроме того, так как передача происходит на сервер, вы не можете передать запрос на внешний сайт.

Более подробную информацию можно найти здесь .

1 голос
/ 14 апреля 2010

Ответ полностью зависит от того, что ожидает пользователь в следующий раз, когда он вернется на ваш сайт. Ожидает ли он, что вы помните контактную информацию, которую он уже ввел? Если это так, то вам придется использовать долгосрочное постоянство в базе данных, cookie-файлах и т. Д. Вводит ли ваш пользователь чужую информацию только для этого посещения (т. Е. Приложение для обслуживания клиентов) и будет вводить другую информацию в следующий раз они посещают? Если это так, то вы можете использовать объект Session.

1 голос
/ 14 апреля 2010

Передача значений через переменные сеанса работает не слишком хорошо. У вас также могут быть шансы, когда пользователь нажмет кнопку «Назад» или нажмет кнопку «Обновить», а переменные сеанса будут собраны сборщиком мусора. Это способ для любых кэшированных элементов. Одним из способов решения этой проблемы является то, что когда пользователь переходит на вторую страницу, вы берете все переменные и помещаете их в скрытое поле, разделенное парой ключ: значение.

Если значения можно поместить в открытую, почему бы просто не поместить их в URL?

Если вы не можете этого сделать, то поместите их в базу данных и присвойте им идентификатор Guid для каждого имени пользователя, что будет для меня последней альтернативой, поскольку при каждом запросе вы должны одновременно читать и записывать в БД .

...