使用 Cookie 的购物车

unk*_*tan 3 c# asp.net

我正在尝试使用 cookie/会话制作一个简单的购物车。根据此代码片段,它仅包含 4 个项目,

<form id="form1" runat="server">
    <div style="height: 296px">



        <asp:ListBox ID="ListBox1" runat="server" Height="164px" Width="107px" 
            SelectionMode="Multiple">
            <asp:ListItem>Tyres</asp:ListItem>
            <asp:ListItem>Battery</asp:ListItem>
            <asp:ListItem>Front Glass</asp:ListItem>
            <asp:ListItem>Vanity Mirrors</asp:ListItem>
        </asp:ListBox>
        <br />
        <br />
        Username:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <br />
        EMail: 
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>



        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" />



    </div>
    </form>
Run Code Online (Sandbox Code Playgroud)

我正在尝试的是选择所有四个项目,然后单击按钮,它将带我进入下一页以输入价格并计算价格,在另一页中我将显示含税总额。我被困在第二页,因为它只显示第一个选择而不是其他三个。下面是第二页的代码:

public partial class confirm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Cookies["UserInfo"] != null)
        {
           // TextBox1.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["userName"]);
            //TextBox2.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["email"]);
            Label1.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["items"]);
            Label2.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["items"]);
            Label3.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["items"]);
            Label4.Text = Server.HtmlEncode(Request.Cookies["UserInfo"]["items"]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

大家有什么想法我可能错了吗?

Ari*_*tos 5

将用户添加到购物车的所有商品存储在 Cookie 上是一个坏主意,因为 Cookie 对可以存储的数据数量有限制,其次页面在每个请求上都会携带所有这些数据,这会使页面难以加载。

如果您尝试将其保存在会话中,那么当会话过期时,用户可能会丢失购物车中的商品,甚至在结帐时也会发生这种情况。例如,用户开始结帐,停止几分钟去做某事,然后当其尝试继续时会话已过期。

正确的方法是将购物车保存在数据库中,并与至少有六个月有效期的用户 cookie 连接。

关于你的代码

你的代码中的错误是你对所有cookie使用相同的名称,这就是为什么你只看到第一个。看,这都是一样的,线路上没有变化。

Request.Cookies["UserInfo"]["items"]
Run Code Online (Sandbox Code Playgroud)

  • @frenchie 显然你没有经营真正的网上商店。 (2认同)
  • @frenchie我建议您不能保存会话购物车数据,因为购物车必须相同,并且在付款之前不得更改。为什么这很难理解?如果您在会话中进行购物车和购物车相关计算,则该用户(统计上每天一名用户(至少一名))会停留并检查购物车超过 20 分钟 - 无需在同一站点上执行任何操作。例如,可能会停下来做一些其他工作,或者与其他商店比较价格等......无论如何,做你喜欢做的事。 (2认同)