2010-05-21 147 views
2

我正在体验Google购物车页面上Google Chrome和Safari的缓存问题。购物车中有2个下拉列表。当您在更改下拉列表中的值后点击结账按钮时,它会将列表中选定的内容提交到数据库。ASP.NET - Chrome浏览器缓存DropDownList选择

解释意外行为有点难,所以我会尝试一步一步写出我的问题。

比方说第一个下拉列表具有的价值:

  • VALUE1
  • VALUE2
  • VALUE3

而第二个下拉列表具有的价值:

  • DUMBO1
  • DUMBO2
  • DUMBO3

我添加项目到我的车。

屏幕说:VALUE1,DUMBO1

数据库云:VALUE1,DUMBO1

我打结帐。

数据库说:VALUE1,DUMBO1(我无法看到的下拉列表,我打结账后,因为我的购物车页面可不是)

我打的后退按钮。

屏幕说:VALUE1,DUMBO1

数据库说:VALUE1,DUMBO1

我下拉VALUE1组合和选择VALUE2,VALUE2瞬间被选择,然后网站会回和VALUE1在下拉菜单中重新选择下拉列表(从DB被重新加载)

瞬间屏幕说:VALUE2,DUMBO1

数据库云:VALUE1,DUMBO1

再经过回发FROM DROPDOWNLIST_SELECTIONCHANGED事件

屏幕说:VALUE1,DUMBO1

数据库云:VALUE1,DUMBO1

命中查看。

数据库VALUE1说,DUMBO1(我无法看到的下拉列表,我打结账后,因为我的购物车页面可不是)

回去。

屏幕说:VALUE2,DUMBO1

数据库云:VALUE1,DUMBO1

所以看起来它想起我的选择VALUE2的,即使它跳回到VALUE1之前我检查了。

这似乎是一个缓存问题,但我有一些没有缓存代码,以防止该页面的缓存,在firefox和Internet Explorer中效果很好,但似乎在Chrome和Safari中失败。我基本上在购物车页面的标题中返回:no-cache,no-store,并且必须重新验证以尝试防止缓存,但基于这种情况,它似乎是缓存页面,而不是在我重新加载时点击后退按钮。

我很乐意接受任何解决方案或建议。谢谢!

+0

是的,我正在设置PageLoad上的下拉列表值,并且我只是在设置值不是回发时就像您建议的那样。 – Fake 2010-05-21 20:48:05

+0

你可以把它归结为一个非常简单的测试用例(你有很多步骤)和代码,然后人们可以更好地重现它。 – Kinlan 2010-05-24 18:47:24

回答

0

我有一个类似的问题,我花了几天才测试才发现没有答案。

假设我们有一个填充颜色的下拉列表。每次我改变价值时,我都会使用ajax进行部分回发,以节省价值并做更多的事情,比如检查股票。

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

然后我打结帐,当我回到我惊讶的红色被选中。我再次回去,我选择了白色。然后回蓝四次后最终变绿。

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

有人可以帮忙吗?

编辑:我试着与另一个网页我正在做,并且它工作正常,但我找不到它们之间可能导致它的任何区别。

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