Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从会话中删除特定值_C#_Asp.net Mvc - Fatal编程技术网

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