C# 从会话中删除特定值
我想从“会话”中删除特定项目。 我的代码是:C# 从会话中删除特定值,c#,asp.net-mvc,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)));
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");
}
public ActionResult DeleteProductFromCart(AddToCart id)
{
MyDBContext MyDBContext=新的MyDBContext();
列表购物车=(列表)会话[“购物车”];
cart.RemoveAt(将.Convert.ToInt16(cart.Contains(id));
返回重定向到操作(“ViewCart”);
}
但这无法正常工作。cart.Contains(id)
将返回布尔值,而不是要删除的项目的索引
您需要做一些类似于以下代码的调整(假设您的AddToCart
类有一个Id字段):
1-重命名传递的参数以提高可读性
public ActionResult DeleteProductFromCart(AddToCart item)
2-获取项目(如果您的收藏中确实存在):
假设您在
AddToCart
类中有一个id属性
List<AddToCart> cart = (List<AddToCart>)Session["cart"];
cart.Remove(itemToDelete);
您正在调用
cart.RemoveAt()
传入cart.Contains(id)
,它看起来像一个布尔值。因此,您并不是真的试图从会话中删除值。这段代码是从哪里来的?你能展示一下你的AddToCart
类吗?@reckface我自己写的。如果id=4,此代码正在从索引4中删除值,而不是id=4的产品x=>x.id==id
将失败,因为您需要从传递的AddToCart
对象获取id
。类似的方法应该可以工作:x=>x.id==passedItem.id
@billamustafa:欢迎。如果这已经解决了你的问题,请不要忘记投票并标记为答案:)@mukeshkudi:不用担心
AddToCart itemToDelete=cart.FirstorDefault(x=>x.id==id.id);
cart.Remove(itemToDelete);