2014-02-05 4 views
6

Hallo Ich versuche, ein einfaches Online-Magazin zu machen, und ich kam zu dem Teil, in dem, wenn der Benutzer klickt addToCart TasteMvc - speichern Sie eine Liste in der Sitzung und dann seinen Wert abrufen

Mein Modell Wagen hält zwei Eigenschaften - Produkt und Menge

public class Cart 
{ 

public ProductLanguages Product { get; set; } 
     public int Quantity { get; set; } 

} 

Also in meinem basketViewModel (Klasse) in meiner AddProductToCart Methode, die ich ein Produkt hinzufügen, die Details, für die ich aus der Datenbank in Eigentum der Liste.

So kann ich dieses Problem nicht herausfinden: Irgendwo in der Kontrolle sollte ich diese Liste in einer Sitzung speichern und wenn der Benutzer mehr Produkte das nächste Mal ich sollte die Liste von dieser Sitzung erhalten. Wenn jemand mir ein Beispiel controler mit einer Indexaktion geben kann, die das tun kann, wäre ich wirklich dankbar.

public class BasketViewModel 
    { 

     private readonly IProductLanguagesRepository prodlanRepository; 
     public List<Cart> listProductsinBasket { get; set; } 
     public BasketViewModel() : this(new ProductLanguagesRepository()) 
     { 

     } 



    public BasketViewModel(IProductLanguagesRepository prodlanRepository) 
    { 
     this.prodlanRepository = prodlanRepository; 
    } 
    public void AddProductToCart(int id,int quantity) 
    { 
     ProductLanguages nwProduct = prodlanRepository.GetProductDetails(id); 
     if (nwProduct != null) 
     { 
      Cart cr = new Cart(); 
      cr.Product = nwProduct; 
      cr.Quantity = quantity; 
      listProductsinBasket.Add(cr); 

     } 
+0

Legen Sie Repositories in Ihrem Ansichtsmodell nicht - tun es in Ihrem Controller. Ihr Ansichtsmodell sollte nur "listProductsinBasket" haben. @KindzaDza hat Recht bezüglich der Sitzung und Sie sollten seine/ihre Antwort markieren. – free4ride

Antwort

4

Store:

HttpContext.Session["list"] = new List<object> { new object(), new object() }; 

Abrufen:

var list = HttpContext.Current.Session["list"] as List<object>; 
+0

Vielen Dank für Ihre Antwort - aber ich habe ein anderes Problem -http: //stackoverflow.com/questions/21596123/why-my-session-in-the-view-control-is-null –

+0

Was Sie versuchen zu tun ist eine schlechte Praxis und hat möglicherweise Auswirkungen sowohl auf die Sicherheit als auch auf die Leistung. Warum speichern Sie in der Sitzung nicht nur die Korb-ID und rufen verwandte Artikel im Controller ab? – Random

Verwandte Themen