ASP.NET Cookie子值删除

时间:2009-08-10 18:17:05

标签: .net asp.net cookies

如何删除ASP.NET中特定cookie中的特定值?

例如:我有一个名为'MyCookie'的Cookie,其中包含值'MyCookieValueOne', 'MyCookieValueTwo', 'MyCookieValueThree'.

现在我需要删除值'MyCookieValueTwo'

我该怎么办?

我们可以使用以下任何属性来实现此目的吗?

Request.Cookies["MyCookie"].Value
Request.Cookies["MyCookie"].Values

为什么?

1 个答案:

答案 0 :(得分:6)

编辑:好的,误读了这个问题。 HttpCookie.Values是一个NameValueCollection,因此您可以修改该集合 - 但是您需要重新发送cookie作为新的cookie来覆盖旧的:

HttpCookie cookie = Request.Cookies["MyCookie"];
if(cookie != null)
{
    cookie.Values.Remove("KeyNameToRemove");
    Response.AppendCookie(cookie);
}

要“删除”整个Cookie,您必须“过期”它 - 更改其过期日期并将其重新发送给客户:

HttpCookie cookie = Request.Cookies["MyCookie"];
if(cookie != null)
{
    cookie.Expires = DateTime.Today.AddMonths(-1);
    Response.AppendCookie(cookie);
}

遗憾的是,在.NET中使用Cookie有点不直观。 AddMonths()有点武断。我使用一个月,你可以使用任何东西 - 只需确保过去相对于接收计算机的时钟设置过期日期。