2010-02-13 90 views
3

我創建了一個簡單的購物車應用程序。我們需要一些特定於我們的需求,長話短說。無論如何,我將車對象存儲在一個cookie中。這工作正常,但我在從類中刪除購物車cookie時遇到問題。購物車對象包含一系列產品(iList)。下面是我用它來刪除cookie代碼: 我清空購物車編號:Cookies和ASP.NET讓我瘋狂

Dim currentCookie As HttpCookie = HttpContext.Current.Response.Cookies(cookieName) 
currentCookie.Expires = DateTime.Now.AddYears(-30) 
HttpContext.Current.Response.Cookies.Add(currentCookie) 

我LoadCartFromCookie代碼:

if not HttpContext.Current.Request.Cookies(theCookieName) is nothing then 
    _cart = CType(HttpContext.Current.Request.Cookies(theCookieName).value,Cart) 
End If 

我的購物車類的構造函數首先試圖從cookie加載車。如果它發現cookie,則會加載購物車對象,否則它將創建購物車的新實例,而無需任何詳細信息。由於某些原因,即使我運行刪除cookie(空購物車)代碼,然後運行我的LoadCartFromCookie代碼(來自購物車類中),它仍會阻塞過期的cookie。有什麼想法嗎?我認爲這可能是一個瀏覽器問題,但我試過IE8,FF 3.5和Chrome。如果在ASPX頁面的代碼隱藏內部,我嘗試查找過期的cookie(Request.Cookies(theName)),它永遠找不到它。這是我希望在課堂內做的事情。

丹尼爾

+0

是的,我知道,但我們也需要客戶端上的對象。就像我說的,這是一個很長的故事... – DDiVita 2010-02-13 22:42:29

回答

2

你運行的語句返回到上下一回發回或?

您剛加載過期的Cookie,是因爲您沒有刪除cookie,您剛剛添加了過期的cookie,不是?

輸入什麼似乎像一個趕上22日,但實際上是一個代碼味道....

要刪除,你必須send an expired cookie瀏覽器的cookie。但是,如果您在同一週期內將Cookie用作代碼中的數據對象,則必須管理Cookie集合。

要麼將​​一個回傳專門用於刪除Cookie,要麼在代碼隱藏時使用clr對象來跟蹤您的購物車。例如將cookie加載到page_load上的對象中,並在退出之前設置對象中的Cookie,但不要引用Cookies集合。

p.s.雖然我一段時間都沒有使用cookie,但如果您想要替換一個cookie,請嘗試Cookies.Remove()並添加新cookie,它應該在瀏覽器中替換舊cookie,同時在集合中保留一個有效cookie爲你。但我還是不建議使用cookie收集的數據存儲在隱藏類代碼...

+0

沒有想到這一點。就是這樣。謝謝!!!!! – DDiVita 2010-02-13 22:32:34

0

到期的cookie的嘗試:

Dim cookie = HttpContext.Current.Request.Cookies(cookieName) 
If Not cookie Is Nothing Then 
    cookie.Expires = DateTime.Now.AddYears(-1) 
    HttpContext.Current.Response.SetCookie(currentCookie) 
End If 
+0

不,沒有工作。我非常有希望;)這是一個奇怪的問題... – DDiVita 2010-02-13 22:31:07

2

因爲即使我運行刪除Cookie(空購物車)的代碼,然後運行我LoadCartFromCookie碼某種原因(從購物車類中)它仍然loades過期的cookie。

在我看來,你是在同一個請求中這樣做。只有在客戶端瀏覽器使用已更新的cookie與某個過期日期的響應後,Cookie纔會被刪除。因此,請在「LoadCartFromCookie」中更新您的代碼以檢查到期日期。
而國際海事組織在數據庫中保存購物車信息要好得多。所以它會在所有瀏覽器之間共享。

+0

這是一個更好的主意,但分貝沒有進入問題。 – 2010-02-13 22:35:06

+0

是的,你是對的...... DUHHHHHHHH!我今天工作太久了。 – DDiVita 2010-02-13 22:38:09

+0

@天空:這只是一個建議,沒有更多:P – zihotki 2010-02-14 09:50:13