Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 从cookie中删除特定值_C#_Asp.net - Fatal编程技术网

C# 从cookie中删除特定值

C# 从cookie中删除特定值,c#,asp.net,C#,Asp.net,我有一个饼干“愿望清单”。它包含id的列表。我想从cookie中删除特定id。我正在反序列化cookie,但无法从中删除特定id。我正在编写的代码如下: public int DeleteFromWishlist(long pid) { List<Int64> ls_p = new List<Int64>(); ls_p = Deserialize<List<Int64>>(Convert.ToString(HttpContext.Curr

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

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);
     }
   }
}
public int DeleteFromWishlist(长pid)
{
列表ls_p=新列表();
ls_p=反序列化(Convert.ToString(HttpContext.Current.Request.Cookies[“wishlist”].Value));
var prd=ls\u p;
foreach(prd中的var项目)
{
如果(项目==pid)
{
string it=item.ToString();
HttpContext.Current.Response.Cookies[“wishlist”].Values.Remove(它);
}
}
}
现在,上面的代码正在删除wishlist cookie中的所有值

if (Request.Cookies["wishlist"] != null)
{
    Response.Cookies["wishlist"].Expires = DateTime.Now.AddDays(-1);   
}
要删除特定项目,请尝试下面的代码(只需覆盖)


将其从列表中删除,然后重置cookie

我解决了它:

  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;

    }
public int DeleteFromWishlist(长pid)
{
int结果=0;
列表ls_p=新列表();
HttpCookie mycokie=null;
ls_p=反序列化(Convert.ToString(HttpContext.Current.Request.Cookies[“wishlist”].Value));
var prd=ls\u p;
{
{
ls_p.Remove(ls_p.FirstOrDefault(p=>p==pid));
字符串数据=序列化项(prd);
mycokie=HttpContext.Current.Request.Cookies[“愿望列表”];
mycookie.Value=数据;
mycookie.Expires=DateTime.Now.AddMonths(1);
HttpContext.Current.Response.Cookies.Add(mycokie);
结果=1;
}
}
返回结果;
}

这将删除整个cookie。我只想从cookie中删除特定值。wishlist cookie包含一个整数数组,我想删除一个特定的整数值。请参阅,我的cookie中的值采用这种形式[3,4],如果我想从中删除4。您的代码正在帮助我从cookie中删除4,但它也将4替换为“=”。因此,愿望列表cookie现在包含[3=],这对我不起作用。如何删除?这就是我想要的
  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;

    }