我不确定它是否会删除 cookie 上的所有内容,或者只是不从用户那里获取现有的 cookie,然后将其添加并返回。
这是代码:
[Authorize]
public ActionResult AddToCart(int productId, int quantity)
{
//If the cart cookie doesn't exist, create it.
if (Request.Cookies["cart"] == null)
{
Response.Cookies.Add(new HttpCookie("cart"));
}
//If the cart already has this item, add the amount to it.
if (Request.Cookies["cart"].Values[productId.ToString()] != null)
{
int tmpAmount = Convert.ToInt32(Request.Cookies["cart"].Values[productId.ToString()]);
Response.Cookies["cart"].Values.Add(productId.ToString(), (quantity + tmpAmount).ToString());
}
else
{
Response.Cookies["cart"].Values.Add(productId.ToString(), quantity.ToString());
}
return RedirectToAction("Index");
}
我使用了断点并且可以确认如果我在 cookie 中有一个项目,然后添加另一个不同的项目,代码运行正确不会执行Response.Cookies.Add(new HttpCookie("cart"));
。所以我不认为我正在创建一个新的cookie。
事实上,我尝试添加相同的项目,我正确地看到该项目的金额增加了,而不是列出了两次。
我认为我的问题在于写入现有的 cookie?
添加另一个项目后的预期结果:
查看购物篮页面中的两项。
实际结果:
仅查看我在购物篮页面中添加的最新项目。
有什么明显的错误吗?这是我第一次涉足饼干。