我有一个asp.net网页表单页面,上面有一个带有autopostback的asp.net下拉列表控件。当用户在下拉列表中进行选择时,将使用查询字符串参数对同一页面发出get请求。
在回发时,我读取了查询字符串参数并加载/填充其他控件。
当用户按下浏览器后退按钮时,将提交先前的请求(及其查询字符串)。在后面的代码我读取查询字符串并加载/填充其他控件,这很好。我还尝试在下拉列表中选择适当的项目(按值)。
我在浏览器中看到的问题是,选项中未显示相应的选项文字。通过检查源我可以看到正确的选项具有selected =“selected”属性,因此在后面的代码中设置所选项是成功的。但是文本仍然与按下后退按钮之前的文本不一致。
奇怪的是,这只发生在chrome中。 ie和firefox都表现得像预期的那样。
有没有人对asp.net下拉列表和chrome有任何问题?
我很难过。
我创建了一个简单的例子来证明这个问题。 src可以在https://github.com/beembow/AspDotNetDropDownInChrome.git
找到通过在下拉列表中选择一些值然后按下后退按钮来重现错误。
答案 0 :(得分:0)
您在哪个页面事件中设置下拉列表的选定值?可能是您在加载页面后进行设置,这就是您没有看到带有所选值的下拉列表的原因。
答案 1 :(得分:0)
他们只修复了我发现的类似于建议的ASP.NET - Google Chrome caching DropDownList selections。
我基本上添加了一个全局变量,该变量包含要在下拉列表中选择的选项的值。我是通过后面代码中的Page.RegisterStartupScript来完成的。
然后我有一些js查找这个全局值,如果它发现它通过jquery在select中选择了适当的选项。
这让我觉得这个问题与chrome如何处理一些asp.net生成的javascript / viewstate有关。它也可能与chrome缓存策略有关。好奇它在firefox和ie中都有效。
无论哪种方式,上面描述的解决方案肯定是一个丑陋的黑客。会对其他人发现的任何解决方案感兴趣。