asp.net下拉列表在chrome中显示不正确

时间:2013-09-24 03:42:15

标签: c# asp.net google-chrome webforms html-select

我有一个asp.net网页表单页面,上面有一个带有autopostback的asp.net下拉列表控件。当用户在下拉列表中进行选择时,将使用查询字符串参数对同一页面发出get请求。

在回发时,我读取了查询字符串参数并加载/填充其他控件。

当用户按下浏览器后退按钮时,将提交先前的请求(及其查询字符串)。在后面的代码我读取查询字符串并加载/填充其他控件,这很好。我还尝试在下拉列表中选择适当的项目(按值)。

我在浏览器中看到的问题是,选项中未显示相应的选项文字。通过检查源我可以看到正确的选项具有selected =“selected”属性,因此在后面的代码中设置所选项是成功的。但是文本仍然与按下后退按钮之前的文本不一致。

奇怪的是,这只发生在chrome中。 ie和firefox都表现得像预期的那样。

有没有人对asp.net下拉列表和chrome有任何问题?

我很难过。

我创建了一个简单的例子来证明这个问题。 src可以在https://github.com/beembow/AspDotNetDropDownInChrome.git

找到

通过在下拉列表中选择一些值然后按下后退按钮来重现错误。

2 个答案:

答案 0 :(得分:0)

您在哪个页面事件中设置下拉列表的选定值?可能是您在加载页面后进行设置,这就是您没有看到带有所选值的下拉列表的原因。

答案 1 :(得分:0)

他们只修复了我发现的类似于建议的ASP.NET - Google Chrome caching DropDownList selections

我基本上添加了一个全局变量,该变量包含要在下拉列表中选择的选项的值。我是通过后面代码中的Page.RegisterStartupScript来完成的。

然后我有一些js查找这个全局值,如果它发现它通过jquery在select中选择了适当的选项。

这让我觉得这个问题与chrome如何处理一些asp.net生成的javascript / viewstate有关。它也可能与chrome缓存策略有关。好奇它在firefox和ie中都有效。

无论哪种方式,上面描述的解决方案肯定是一个丑陋的黑客。会对其他人发现的任何解决方案感兴趣。