Хранение списка продуктов в течение всей сессии - PullRequest
1 голос
/ 05 октября 2010

Я использую MVC ASP.NET C #, jQuery

Я создаю то, что можно описать как самую простую корзину в мире. В основном, Мои клиенты хотят, чтобы пользователи могли просматривать сайт. Нажмите на продукт, который они хотят, и он будет добавлен в «список», а затем, когда они «Оформить заказ», они просто заполняют форму, и он отправляет мой клиент по электронной почте со списком продукты, которые они выбрали!

Я думал о чем-то вроде хранения их в печенье. Так как пользователь просматривает, они не будут потеряны, тогда появится диалоговое окно jQuery, когда они решат просмотреть / оформить свою корзину. и он может перечислить все продукты, а затем они просто заполнить простую форму ..

Это лучший способ это сделать. Это дешевый сайт, и я хотел бы самый простой способ сделать это? Все, что я думаю, мне нужно отсортировать, это идентификатор продукта ..

Любые идеи о лучших путях или любые мнения вообще!

Ответы [ 4 ]

2 голосов
/ 05 октября 2010

Использование сеанса зависит от того, думаете ли вы, что пользователи выберут продукты за один раз. Или они покинут страницу и вернутся через час? Проблема заключается в том, что, если они возвращаются через час, возможно, состояние сеанса было собрано для сбора мусора для освобождения ресурсов на сервере, или сеанс мог истечь.

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

Вам просто нужно сериализовать список идентификаторов продуктов, передать эту сериализованную строку в представление и поместить ее в скрытое поле.

1 голос
/ 05 октября 2010

Если вы используете jquery, вы можете сохранить корзину в виде массива json внутри элемента $ ('body'). Data () (или, фактически, как я, под div, называемым "#storage"). это работает как фантастический механизм локального хранения, хотя 'будет иметь отношение только к текущей странице, на которой был пользователь, и будет очищено при переходе к последующим' новым страницам ', если, конечно, ваш дизайн не был таким, чтобы страница покупок была ВСЕГДА та же страница и обновляется только методами ajax. таким образом, вы можете постоянно добавлять / изменять структуру json на странице «worksurface».

Я использую эту технику для другого применения логики, но практически по той же причине.

вот фрагмент того, что я делаю:

/* example of data params key*/
var keyParams = "Data-Search-type-" + $('#searchtype').val();
/* add json to body with key*/
$('#storage').data(keyParams, jsonData);

/* get same data back later */
var jsonData = $('#storage').data(keyParams);

Когда я «сохраняю» данные на сервере, я очищаю элемент data () до нуля. Конечно, есть и другой вариант самого localalstorage, который может быть хорошо использован, особенно в автономных средах (таких как мобильные приложения).

еще один способ снять кожу с многокожей кошки !!

1 голос
/ 05 октября 2010

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

1 голос
/ 05 октября 2010

Я бы сказал, чтобы перейти к объекту Session. Вы всегда можете настроить расположение сеансов во время выполнения

Я думаю, что некоторым может не понравиться этот метод хранения (он нарушает тестовую изоляцию, если я не ошибаюсь), но он есть бесплатно :) 1003 *

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