如何在会话结束时清除集合的内容?

时间:2013-07-21 10:41:46

标签: asp.net session web-applications

我正在使用ASP.NET设计购物车应用程序。当用户完成购物时,显示总应付金额。然后他关闭了浏览器。下次打开浏览器时,项目的数量仍保持不变,当选择项目时,将显示旧数量。

可能是因为ASP.NET Development Server处于运行状态并显示在通知区域中。

我使用的Check-Out按钮的代码如下。

    protected void btnCheckout_Click(object sender, EventArgs e)
    {
        List<CD> CdCheckOutList = new List<CD>();
            CdCheckOutList = (List<CD>)Session["cart"];
            double totalPrice = 0.0;

            foreach (var cd in CdCheckOutList)
            {
                totalPrice += cd.Amount;
            }
            lblTotal.Text = "Total Price = "+totalPrice.ToString();

    }

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

在结帐流程结束时,您有两个选择:

仅从cart中删除Session项,如下所示:

Session.Remove("cart");

cart键保留在Session中,但将值设为null,如下所示:

Session["cart"] = null;

当用户点击浏览器上的关闭按钮时,我会推迟到javascript detect browser close tab/close browser

之前的StackOverflow问题

答案 1 :(得分:0)

来自onunload事件的调用将对您的问题进行排序。看一下对你有帮助的下面一段代码。

代码背后:

public static void ClearSession()
{ 
    Session["cart"] = null;
}

Jquery和Ajax调用服务器端调用:

$(window).unload(function() {

 $.ajax({
    type: "POST",
    url: "PageName.aspx/ClearSession",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
         // Do something interesting here.
    }
});