2017-06-17 3 views
0

Ich versuche eine Kasse für den Warenkorb in meinem Webshop-Projekt für Classes zu erstellen. Ich möchte, dass jedes Mal, wenn Sie Ihre Kasse aus dem Modell Clothes.Amount 1 für jedes Produkt, das Sie in der Warenkorb-Sitzung haben nehmen. und dann möchte ich den Wagen reinigen.CheckOut Warenkorb MVC

Im Warenkorb Controller habe ich diese drei Funktionen und eine andere zu bestellen, aber es ist nicht wichtig für diese Frage, denke ich. Der Fehler int dieser Zeilen ist

Item.Cl.Amount--; 
Delete(Item.Cl.Id); 

Hier ist der Code

private int isExisting(int id) 
     { 
      List<Item> cart = (List<Item>)Session["cart"]; 
      for (int i = 0; i < cart.Count; i++) 
      { 
       if (cart[i].Cl.Id == id) 
        return i; 
      }return -1; 
     } 
public ActionResult Delete(int idDelete) 
     { 
      int index = isExisting(idDelete); 
      List<Item> cart = (List<Item>)Session["cart"]; 
      cart.RemoveAt(index); 
      Session["cart"] = cart; 

      return View("Order"); 

     } 
public ActionResult CheckOut(int idCheck) 
     { 
      int index = isExisting(idCheck); 
      if(index != -1) { 
       foreach (Item item in (List<Item>)Session["cart"]) { 
        Item.Cl.Amount--; 
        Delete(Item.Cl.Id); 
       } 
      } 
      return View(); 
     } 

Antwort

0

Aus Ihrer Frage vermag ich nicht zu sehen, welche Fehler Sie bekommen. Aber wenn ich nur auf Ihren Code schaue, würde ich denken, dass dies der Klassiker ist. "Sammlung wurde geändert; Aufzählungsoperation kann nicht ausgeführt werden".

In Methode CheckOut Sie durchlaufen die Elementliste in Ihrer Sitzung. Während Sie dies tun, rufen Sie die Delete Methode, die ein Element aus der Liste entfernt. Das ist einfach nicht erlaubt ...

Wenn das Ihr Problem ist, könnten Sie Ihre zweite Methode folgt ändern:

public ActionResult CheckOut(int idCheck) 
     { 
      int index = isExisting(idCheck); 
      if(index != -1) { 
       foreach (Item item in ((List<Item>)Session["cart"]).ToList()) { 
        Item.Cl.Amount--; 
        Delete(Item.Cl.Id); 
       } 
      } 
      return View(); 
     } 
Verwandte Themen