2017-06-17 6 views
0

私は、私のwebshopプロジェクトでカートのチェックアウトを作成しようとしています。 カートのセッションで持っている製品ごとに、あなたのプレスチェックがモデルClothes.Amount 1から取得するたびに、その欲しいと思います。 それからカートをきれいにしたい。CheckOutカートのMVC

カートのコントローラでは、この3つの機能と1つを注文する必要がありますが、この質問には重要ではありません。 エラーがこのライン

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

intでここで私はあなたが取得しているエラーを参照することができませんあなたの質問からコード

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(); 
     } 

答えて

0

です。しかし、ちょうどあなたのコードを見て、これは古典的な "コレクションは変更された;列挙操作は実行されないかもしれない"と思うだろう。

インメソッドCheckOutセッションのアイテムリストを反復処理しています。あなたがそうしている間は、リストから項目を削除するDeleteメソッドを呼び出します。

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(); 
     } 
:それはそれはあなたの問題である場合は、次のようにあなたの第二の方法を変更することができます...

単純に許可されていません

関連する問題