Koszyk oparty o sesje

Odpowiedz Nowy wątek
2015-02-16 16:07
0

Panowie.

Ma ktoś jakiś generalny zarys koszyka opartego na sesji? Piszę coś własnego ale nie działa to zbyt fajnie.

Jak sie za to zabrac? Jak zapisać kolekcję obiektów w sesji i zeby np sesja wyagsala po 2 godzinach?

Macie może jakieś pomysły którymi chcielibyście się podzielić?


Pozostało 580 znaków

2015-02-16 16:12
0

Zrobiłem sobie jakiś taki ViewModel dla koszyka z kilkoma potrzenymi polami


 ShoppingCartViewModel scvm = new ShoppingCartViewModel()
            {
                CartId = Guid.NewGuid(),
                ProductName = productName,
                Quantity = ilosc,
                AmountToPay = kwotaDoZaplaty,
                AddToCartDate = dataDodaniaDoKoszyka,
                UserName = dodanoDlaUzytkownika
            };

Wiem, że ogólnie zapisuje się w sesji np tak


Session["zawartoscKoszyka"] = allProductsInCart;

Potem zawartość sesji przekazuję sobie do widoku:


return View((List<ShoppingCartViewModel>)Session["zawartoscKoszyka"]);

Z tym, że przekazuje sobie ten produkt i jego ilość z widoku do akcji kontrolera, tam sobie cos licze, potem wyswietlam w widoku ten mój ViewModel ale jak z tego wyjde to nagle ten widok jest pusty. Nie wiem jak zapisać to tam na dłuższy czas.


Pozostało 580 znaków

2015-02-16 16:19
0

Czy lepiej może przechowywać sobie produkty w koszuku w osobnej tabeli bazy danych? Podobno local storage też dobrze się sprawuje.


Pozostało 580 znaków

2015-02-16 16:23
ne0
0

Moim zdaniem lepiej przechowywać to w bazie danych.
Co do czasu: po prostu zapisz czas dodania do bazy danych, następnie sprawdzasz przy pobieraniu danych czy czas jest <2h i jeśli tak no to wszystko jest OK. Po skończonych zakupach czyścisz tabelę.


Pomogłem? To dobrze :)
edytowany 1x, ostatnio: ne0, 2015-02-16 16:24

Pozostało 580 znaków

2015-02-16 16:55
0
Odyn napisał(a):

Jak zapisać kolekcję obiektów w sesji i zeby np sesja wyagsala po 2 godzinach?

Wpisz w web.config:

<sessionState timeout="120"  />
Odyn napisał(a):

Z tym, że przekazuje sobie ten produkt i jego ilość z widoku do akcji kontrolera, tam sobie cos licze, potem wyswietlam w widoku ten mój ViewModel ale jak z tego wyjde to nagle ten widok jest pusty. Nie wiem jak zapisać to tam na dłuższy czas.

Może kasujesz te dane z sesji, może nie umiesz ich pobrać, coś na pewno robisz źle.

ne0 napisał(a):

Po skończonych zakupach czyścisz tabelę.

A co, jeśli zakupy nie zostaną zakończone? Tabela będzie rosła w nieskończoność?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2015-02-16 16:58
ne0
0
ne0 napisał(a):

Po skończonych zakupach czyścisz tabelę.

A co, jeśli zakupy nie zostaną zakończone? Tabela będzie rosła w nieskończoność?</quote>

Jakiegoś job-a założyć na tabelę żeby czyściło po pewnym czasie.


Pomogłem? To dobrze :)

Pozostało 580 znaków

2015-02-16 17:03
abca
0

Ja bym to w session_end kasował.

Pozostało 580 znaków

2015-02-16 19:51
0

Zastanawiam się jak zrobić to na samej sesji bez bazy danych. Jak to zrobić?


Pozostało 580 znaków

2015-02-16 20:20
  1. Wstawić dane do sesji.
  2. Odczytać dane z sesji.
  3. Profit.

"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
Jak zwykle wylewny :D - Odyn 2015-02-17 00:32

Pozostało 580 znaków

2015-02-17 00:33
0

Ok zrobiłem już to właśnie. Cały koszyk oparłem na sesjii i działa bardzo fajnie :)


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0