CheckOut Cart MVC

时间:2017-06-17 20:43:18

标签: c# asp.net-mvc checkout webshop

我正在尝试在我的网店项目中为classe创建一个购物车结帐。 我希望每次你的新闻结账都会从购物车会议中的每件产品的型号Clothes.Amount 1中获取。 然后我想清理推车。

在购物车控制器中,我有三个功能,另外还有一个订购,但我觉得这个问题并不重要。 错误是这行

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

这是代码

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

1 个答案:

答案 0 :(得分:0)

根据您的问题,我无法看到您收到的错误。但只是看看你的代码,我会认为这是经典的#34;集合被修改;枚举操作可能无法执行&#34;。

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