我在购物车页面上遇到了Google Chrome和Safari似乎存在的缓存问题。在购物车中有2个下拉列表。在更改下拉列表中的值后点击结帐按钮时,它会将列表中选择的内容提交到数据库。
解释意外行为有点难,所以我会尝试逐步说明我的问题。
假设第一个下拉列表的值为:
第二个下拉列表的值为:
我在购物车中添加了一件商品。
屏幕说: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以尝试阻止缓存,但基于这种情况,它似乎无论如何缓存页面而不是在我重新加载它时点击后退按钮。
此时我对任何解决方案或建议持开放态度。谢谢!
答案 0 :(得分:0)
我遇到了类似的问题,我花了几天时间测试才发现没有答案。
假设我们有一个充满颜色的下拉列表。每次我更改值时,我都会使用ajax进行部分回发以保存值并执行更多操作,例如检查股票。
我选择(按此顺序):红色,白色,蓝色,绿色。
然后我点击结账,当我惊讶地发现红色被选中。我又回去了,我选择了白色。回去四次,然后是蓝色,最后是绿色。
我试过IE和FF,发现它工作正常,所以它不是代码中的错误。它必须是镀铬的东西。
任何人都可以帮忙吗?
编辑:我尝试了我正在制作的另一个网页,并且它工作正常,但我发现它们之间没有任何可能导致它的差异。
Edit2:我找到了一种方法来“解决”在导航事件中使用ScriptManager.RegisterStartupScript
来编写一个正确设置值的脚本,而不是在codebehind
处执行。这不是一个非常优雅的方式,但它对我有用,我希望其他有类似问题的人。