【问题标题】:ASP.NET Cookie Sub-Value DeletionASP.NET Cookie 子值删除
【发布时间】:2010-11-18 09:19:47
【问题描述】:

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

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

现在我需要删除值'MyCookieValueTwo'

我该怎么办?

我们可以使用以下任何属性来实现这一点吗?

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

为什么?

【问题讨论】:

    标签: .net asp.net cookies


    【解决方案1】:

    编辑:好的,误读了问题。 HttpCookie.Values 是一个 NameValueCollection,因此您可以修改该集合 - 但您需要将 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() 有点随意。我使用一个月,你可以使用任何东西 - 只需要确保相对于接收计算机的时钟将过期日期设置为过去。

    【讨论】:

    • 这不起作用。我只需要删除一个值。但是,这会删除整个 Cookie。
    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2017-03-16
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多