从会话中删除特定值

时间:2018-10-09 10:38:08

标签: c# asp.net-mvc

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

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

但这不能正常工作。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

假设您在AddToCart类中具有id属性

  1. 首先,您必须从会话中检索购物车

    List<AddToCart> cart = (List<AddToCart>)Session["cart"];
    
  2. 在那之后,您必须获得与ID相关联的购物车

    AddToCart itemToDelete=cart.FirstorDefault(x=>x.id==id.id);
    
  3. 最后,您可以像这样删除...

    cart.Remove(itemToDelete);