我想从“会话”中删除特定项目。 我的代码是:
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");
}
但这不能正常工作。
答案 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属性
首先,您必须从会话中检索购物车
List<AddToCart> cart = (List<AddToCart>)Session["cart"];
在那之后,您必须获得与ID相关联的购物车
AddToCart itemToDelete=cart.FirstorDefault(x=>x.id==id.id);
最后,您可以像这样删除...
cart.Remove(itemToDelete);