我需要将购物清单项目存储在cookie中。我有产品页面,每个产品都有一个"添加"按钮,应该将其添加到cookie中。我遇到了一个问题,我观察到我只能在cookie中存储一种产品。如果用户想要将第二个产品添加到购物篮,则第一个产品将被新添加的产品覆盖。
我在网上没有找到任何可以帮助我的解决方案,我的问题是:我可以在 cookie 中存储对象列表。
我尝试了这种方式:
string myObjectJson = new JavaScriptSerializer().Serialize(cartItem);
var cookiea = new HttpCookie("myObjectKey", myObjectJson)
{
Expires = DateTime.Now.AddYears(1)
};
当我需要cookie值时,我可以得到这种方式。它的工作原理:
var tttt = new JavaScriptSerializer().Deserialize<ShoppingCartVM>(myObjectJson);
如果 cookie 已经包含一个项目,我将如何解决问题,将新项目添加到同一个 cookie,这意味着 cookie 必须存储对象列表,以及当我需要它向我返回整个对象列表时?谁能帮我解决这个问题?提前感谢!
您真的不应该使用 Cookie 来存储购物车商品。在这种情况下,会话要好得多。Cookie 存储在客户端,而会话存储在服务器上。当您使用 cookie 时,您会在客户端和服务器之间来回发送整个序列化购物车,这不是必需的。此外,Cookie 的大小是有限的,会话确实允许您存储复杂的对象。
要保存购物车,请使用(在控制器中(:
ShoppingCartVM cart; // create instance of the shopping cart
this.Session["ShoppingCart"] = cart;
若要获取值,请使用:
if (this.Session["ShoppingCart"] !== null)
{
ShoppingCartVM cart = (ShoppingCartVM)Session["NeededByDateTime"];
}
如果你需要一些持久的东西。确保用户即使在几个月后也能在购物车中找到他们的产品。您应该考虑将他们的购物车保存在数据库中。