2010-02-13 91 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