3

クッキー/セッションを使用して簡単なショッピングカートを作成しようとしています。このコードスニペットによると、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>

私が試しているのは、4つの項目すべてを選択し、ボタンをクリックすると、次のページに移動して価格を入力し、価格を計算します。別のページに、合計を税込みで表示します。2ページ目は、他の3つではなく、最初の選択を示しているだけなので、行き詰まっています。以下は2ページ目のコードです。

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"]);
        }
    }
}

私が間違っているかもしれないアイデアの人はいますか?

4

1 に答える 1

4

ユーザーがカートに追加するすべてのアイテムを Cookie に保存することはお勧めできません。Cookie には保存できるデータの数に制限があり、2 つ目は、ページがすべてのリクエストでそのすべてのデータを運ぶため、ページの読み込みが困難になるためです。 .

セッションに保存しようとすると、ユーザーはセッションの有効期限が切れたときにカートの内容を失う可能性があり、これはチェックアウト時でも発生する可能性があります。たとえば、ユーザーがチェックアウトを開始し、何かをするために数分間停止し、続行しようとするとセッションが期限切れになります。

正しい方法は、少なくとも 6 か月の有効期限を持つユーザー Cookie に接続されたデータベースにカートを保持することです。

あなたのコードについて

コードのバグは、すべてに同じ Cookie 名を使用しているため、最初のものしか表示されないことです。ほら、これは同じであり、行の変更ではありません。

Request.Cookies["UserInfo"]["items"]
于 2012-06-02T08:01:47.997 に答える