asp.net 下拉菜单在镶边中显示不正确

本文关键字:显示 不正确 net 下拉菜单 asp | 更新日期: 2023-09-27 18:32:26

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

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

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

我在浏览器中看到的问题是选择中没有显示适当的选项文本。 通过检查源代码,我可以看到正确的选项具有 selected="selected" 属性,因此在代码隐藏中设置所选项目是成功的。 但是文本不正确地仍然与按下后退按钮之前相同。

奇怪的是,这只发生在chrome中。 IE和Firefox都按预期运行。

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

我在这里被难住了。

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

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

asp.net 下拉菜单在镶边中显示不正确

您在哪个页面事件中设置下拉列表的选定值?可能是您在加载页面后对其进行了设置,这就是为什么您看不到具有所选值的下拉列表集的原因。

他们只修复了我发现与建议 ASP.NET 类似的修复 - 谷歌浏览器缓存下拉列表选择。

我基本上添加一个全局变量,该变量保存要在下拉列表中选择的选项的值。 我通过代码隐藏中的Page.RegisterStartupScript执行此操作。

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

这让我认为这个问题与 chrome 如何处理某些 asp.net 生成的 javascript/viewstate 有关。 这也可能与 chrome 缓存策略有关。 好奇它适用于火狐和IE。

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