首页 > 解决方案 > 从 Session 中删除特定值

问题描述

我想从“会话”中删除特定项目。我的代码是:

public ActionResult DeleteProductFromCart(AddToCart id)
{
MyDBContext myDBContext = new MyDBContext();
List<AddToCart> cart = (List<AddToCart>)Session["cart"];
cart.RemoveAt(Convert.ToInt16(cart.Contains(id)));      
return RedirectToAction("ViewCart");
}

但这不能正常工作。

标签: c#asp.net-mvc

解决方案


cart.Contains(id)将返回一个布尔值,而不是您要删除的项目的索引。

您将需要进行一些类似于以下代码的调整(假设您的AddToCart类有一个 Id 字段):

1-重命名您传递的参数以获得更好的可读性

public ActionResult DeleteProductFromCart(AddToCart item)

2- 获取该项目(如果它确实存在于您的收藏中):

var itemToBeRemoved = cart.SingleOrDefault(i=>i.Id == item.Id);

// if the item exists, remove it from the cart collection
if(itemToBeRemoved!=null)
{
   cart.remove(itemToBeRemoved);
}

推荐阅读