2013-07-21 37 views
0

我正在設計一個使用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

在結帳過程的最後,你有兩個選擇:

只刪除cartSession項目,像這樣:

Session.Remove("cart"); 

Sessioncart關鍵,但要值null ,像這樣:

Session["cart"] = null; 

當用戶點擊瀏覽器上的關閉按鈕時, n個I推遲至javascript detect browser close tab/close browser

+0

我嘗試了這些選項,但它不工作! –

0

從onunload事件中調用以前的StackOverflow問題將整理出來你的問題。看看下面這段代碼對你有幫助。

代碼背後:

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. 
    } 
});