我正在使用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();
}
请帮我解决这个问题。
答案 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.
}
});