在C#中从cookie中删除特定键/值

时间:2018-02-18 23:08:50

标签: c# asp.net cookies

我有一个购物车,可以将所有购物车项目添加到cookie中,这样当用户去他的“购物车”结账时,这些项目会填充该页面...我有那个部分正在运行,但我有一个{当用户想要从购物车中删除似乎没有从cookie中删除该项目的项目时,请求{1}}。

我的Cookie字符串如下所示(例如,如果有两个项目已添加到购物车:from keras.applications import inception_v3 # Build the InceptionV3 network with our placeholder. # The model will be loaded with pre-trained ImageNet weights. model = inception_v3.InceptionV3(weights='imagenet', include_top=False) dream = model.input ,其中左侧是POST,右侧是1=X Large&2=Small < / p>

这是我的代码:

productId

正如您所看到的,我在不同的行打印输出,这是我在控制台中看到的内容:

MerchSize

1 个答案:

答案 0 :(得分:1)

似乎我之前对可能重复的评论不正确。在进一步检查时,我注意到,当cookie已经存在时,值会更新,但是实际上不会从cookie本身中删除需要删除的值。

所以问题出现在以下代码中:

angular-toastr

当cookie已经存在时,它将被取消并且更新HttpCookie updatedCookie = Request.Cookies["CartCookie"]; if (updatedCookie == null) { // [omitted] } else { // update the cookie values foreach (KeyValuePair<string, string> kvp in keyValuePairs) { System.Diagnostics.Debug.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); updatedCookie.Values[kvp.Key] = kvp.Value; } } 字典中的值。在早期的陈述中,您已经从字典中删除了一个值,但是字典没有绑定到cookie,这意味着您删除的密钥仍然存在于cookie中。

您需要确保Cookie值为空:

keyValuePairs

甚至更好,删除一个特定的密钥:

// Clear the cookie value entirely
cookie.Value = null;

后者似乎比我更好,因为它不需要你将值解析为字典并更新它们。

作为旁注,如果要更新cookie,则不需要删除cookie。只需发送更新的cookie及其新属性(值,时间等),客户端上的现有cookie就会更新。