Передача значений через страницы ASP.net - PullRequest
1 голос
/ 07 апреля 2010

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

Конечно, я могу очистить сеанс, когда пользователь выполняет определенное действие, и список идентификаторов больше не нужен, но если пользователь покидает страницу, не выполнив никаких действий, я хочу очистить сеанс, как я могу это сделать?

Если несколько пользователей используют одну и ту же функциональность, нужно ли путать элементы сеанса или сеанс для одного пользователя?

Я работаю в asp.net c #

Спасибо

Ответы [ 4 ]

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

Если несколько пользователей используют одинаковую функциональность и идентификаторы одинаковы для каждого пользователя, используйте состояние приложения или шаблон Singleton.

Если у каждого пользователя должен быть свой список идентификаторов, вы можете использовать состояние сеанса, уникальное для каждого пользователя. В классическом asp вы не должны использовать объект, например коллекцию, но в ASP.NET вы можете поместить их в список, массив и т. Д.

В ASP.NET вы можете совместно использовать состояние сеанса между серверами, если вы включаете службу сеанса или помещаете состояние сеанса в базу данных.

Вы также можете рассмотреть файлы cookie, если идентификаторы являются числовыми, вы можете разделить их запятыми и загрузить их с относительно низкими издержками, но с оговоркой, что умный пользователь может изменить значения.

Наконец, вы можете хранить эти значения в таблице базы данных между вызовами.

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

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

Чтобы очистить сеанс, просмотрите: Session.Contents.Remove.

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

Сеанс для каждого пользователя (больше похож на экземпляр браузера).

Сеанс истекает после некоторого предустановленного / предопределенного тайм-аута.

0 голосов
/ 07 апреля 2010

Используйте комбинацию двух методов - строки запроса и Session.

Когда вам нужно сохранить свои идентификаторы, вставьте их в сессию, но ключ, который вы используете, должен быть сгенерирован случайным образом Guid:

string key = Guid.NewGuid().ToString();
Session[key] = myIDs;

Помните об этом guid и добавляйте его в строку запроса, когда пользователь покидает страницу (он будет щелкать гиперссылку или нажимать кнопку, чтобы покинуть страницу, затем вы можете добавить его).

Если пользователь не выполняет магическое действие и покидает страницу, ключ для получения идентификаторов теряется при выходе. Идентификаторы, которые были помещены в Сессию, будут удалены, когда Сессия перезапускается / завершается, или когда вы делаете Session.Clear().

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