2014-04-04 62 views
0

我有一个cookie“愿望清单”。它包含id的列表。我想从cookie中删除一个特定的ID。我正在反序列化cookie,但我无法从中删除特定的ID。我正在处理的代码如下:从cookie中删除特定值

public int DeleteFromWishlist(long pid) 
{ 
    List<Int64> ls_p = new List<Int64>(); 
    ls_p = Deserialize<List<Int64>>(Convert.ToString(HttpContext.Current.Request.Cookies["wishlist"].Value)); 
    var prd = ls_p; 
    foreach (var item in prd) 
    { 
    if (item == pid) 
    { 
     string it = item.ToString(); 
     HttpContext.Current.Response.Cookies["wishlist"].Values.Remove(it); 
    } 
    } 
} 

现在上面的代码将从wishlist cookie中删除所有值。

回答

1
if (Request.Cookies["wishlist"] != null) 
{ 
    Response.Cookies["wishlist"].Expires = DateTime.Now.AddDays(-1); 
} 

,并删除特定项目尝试下面的代码(只是覆盖)

Response.Cookies["wishlist"].Values["YourItem"] = String.Empty; 
+0

这将删除整个cookie。我只想从cookie中删除特定的值。愿望清单cookie包含一个整数数组,我想删除一个特定的整数值。 – Manu

+0

我已经更新了答案,你可以试试@Manu – Neel

+0

请参阅我在这个表单[3,4]中的cookie中的值,如果我想从中删除4。你的代码帮助我从cookie中删除4,但它也用“=”替换4。所以愿望清单cookie现在包含[3 =]这不适合我。 – Manu

0

从列表中删除,然后重新设置cookie的

+0

如何移除?这就是我所要求的 – Manu

0

我解决了它:

public int DeleteFromWishlist(long pid) 
    { 
     int result = 0; 
     List<Int64> ls_p = new List<Int64>(); 
     HttpCookie mycookie = null; 
     ls_p = Deserialize<List<Int64>>(Convert.ToString(HttpContext.Current.Request.Cookies["wishlist"].Value)); 

     var prd = ls_p; 

     { 
      { 
       ls_p.Remove(ls_p.FirstOrDefault(p=>p==pid)); 
       string data = SerializeItem<List<Int64>>(prd); 
       mycookie = HttpContext.Current.Request.Cookies["wishlist"]; 
       mycookie.Value = data; 
       mycookie.Expires = DateTime.Now.AddMonths(1); 
       HttpContext.Current.Response.Cookies.Add(mycookie); 
       result = 1; 
      } 

     } 

     return result; 

    }