ASP.NET - 谷歌浏览器缓存DropDownList选择

时间:2010-05-21 20:27:59

标签: asp.net caching safari drop-down-menu google-chrome

我在购物车页面上遇到了Google Chrome和Safari似乎存在的缓存问题。在购物车中有2个下拉列表。在更改下拉列表中的值后点击结帐按钮时,它会将列表中选择的内容提交到数据库。

解释意外行为有点难,所以我会尝试逐步说明我的问题。

假设第一个下拉列表的值为:

  • VALUE1
  • VALUE2
  • VALUE3

第二个下拉列表的值为:

  • DUMBO1
  • DUMBO2
  • DUMBO3
  

我在购物车中添加了一件商品。

屏幕说:VALUE1,DUMBO1

数据库说:VALUE1,DUMBO1

  

我点击了Checkout。

数据库说:VALUE1,DUMBO1(我点击结账后看不到下拉列表,因为我不在购物车页面)

  

我按了后退按钮。

屏幕说:VALUE1,DUMBO1

数据库说:VALUE1,DUMBO1

  

我下拉VALUE1组合并选择VALUE2,暂时选择VALUE2,然后网站回发并在下拉列表中重新选择VALUE1(从数据库重新加载)

MOMENTARILY屏幕说:VALUE2,DUMBO1

数据库说:VALUE1,DUMBO1

  

然后从DROPDOWNLIST_SELECTIONCHANGED EVENT回发后

屏幕说:VALUE1,DUMBO1

数据库说:VALUE1,DUMBO1

  

点击结账。

数据库说VALUE1,DUMBO1(我点击结账后看不到下拉列表,因为我不在购物车页面)

  

回去。

屏幕说: VALUE2 ,DUMBO1

数据库说:VALUE1,DUMBO1

所以它似乎记得我选择的VALUE2,即使它在我签出之前又跳回到VALUE1。

这似乎是一个缓存问题,但我有一些无缓存代码,以防止缓存该页面在Firefox和Internet Explorer中运行良好但似乎在Chrome和Safari中失败。我基本上返回购物车页面的标题:no-cache,no-store和must-revalidate以尝试阻止缓存,但基于这种情况,它似乎无论如何缓存页面而不是在我重新加载它时点击后退按钮。

此时我对任何解决方案或建议持开放态度。谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我花了几天时间测试才发现没有答案。

假设我们有一个充满颜色的下拉列表。每次我更改值时,我都会使用ajax进行部分回发以保存值并执行更多操作,例如检查股票。

我选择(按此顺序):红色,白色,蓝色,绿色。

然后我点击结账,当我惊讶地发现红色被选中。我又回去了,我选择了白色。回去四次,然后是蓝色,最后是绿色。

我试过IE和FF,发现它工作正常,所以它不是代码中的错误。它必须是镀铬的东西。

任何人都可以帮忙吗?

编辑:我尝试了我正在制作的另一个网页,并且它工作正常,但我发现它们之间没有任何可能导致它的差异。

Edit2:我找到了一种方法来“解决”在导航事件中使用ScriptManager.RegisterStartupScript来编写一个正确设置值的脚本,而不是在codebehind处执行。这不是一个非常优雅的方式,但它对我有用,我希望其他有类似问题的人。