ASP.NET - Chrome浏览器缓存DropDownList选择
我正在体验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,并且必须重新验证以尝试防止缓存,但基于这种情况,它似乎是缓存页面,而不是在我重新加载时点击后退按钮。
我很乐意接受任何解决方案或建议。谢谢!
我有一个类似的问题,我花了几天才测试才发现没有答案。
假设我们有一个填充颜色的下拉列表。每次我改变价值时,我都会使用ajax进行部分回发,以节省价值并做更多的事情,比如检查股票。
我选择(按此顺序):红色,白色,蓝色,绿色。
然后我打结帐,当我回到我惊讶的红色被选中。我再次回去,我选择了白色。然后回蓝四次后最终变绿。
我试过IE和FF,发现它工作正常,所以它不是代码中的错误。它必须是铬的东西。
有人可以帮忙吗?
编辑:我试着与另一个网页我正在做,并且它工作正常,但我找不到它们之间可能导致它的任何区别。
EDIT2:我发现了一个方法来“解决”它使用ScriptManager.RegisterStartupScript
在导航事件编写一个脚本,正确设置,而不是在codebehind
做它的值。这不是一个非常优雅的方式,但它对我有用,我希望对于有类似问题的其他人。
是的,我正在设置PageLoad上的下拉列表值,并且我只是在设置值不是回发时就像您建议的那样。 – Fake 2010-05-21 20:48:05
你可以把它归结为一个非常简单的测试用例(你有很多步骤)和代码,然后人们可以更好地重现它。 – Kinlan 2010-05-24 18:47:24