我正在尝试在我的网店项目中为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();
}
答案 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();
}