【问题标题】:asp.net dropdown displaying incorrectly in chromeasp.net 下拉菜单在 chrome 中显示不正确
【发布时间】:2013-09-24 03:42:14
【问题描述】:

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

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

当用户按下浏览器的返回按钮时,之前的请求被提交(连同它的查询字符串)。在后面的代码中,我读取了查询字符串并加载/填充其他控件,效果很好。我还尝试在下拉列表中选择适当的项目(按值)。

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

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

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

我被难住了。

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

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

【问题讨论】:

  • 请显示您的一些代码,例如绑定数据部分、page_load、aspx 标记页面等,还有,你的意思是在 chrome 中显示不正确,在 IE、firefox 中呢?它们是否正常工作,如果可以,开发者工具中是否显示任何错误?
  • 今天早上会尝试添加一些代码......但我相信我的公司政策会阻止我这样做......也许我看看我是否可以创建一个等效的示例。 Firefox 中不存在此问题,即它们在下拉菜单中显示正确的文本。
  • 我应该澄清一下,下拉选择更改会触发回发,并且此事件的处理程序使用查询字符串(GET)执行 Response.Redirect 到同一页面。然后 Page_Load 事件读取查询字符串并加载其他字段并在下拉列表中设置适当的值。
  • 我找到了stackoverflow.com/questions/2885338/…,我认为这与我遇到的问题相同,但可能解释得更好。

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


【解决方案1】:

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

【讨论】:

  • 它被设置在一个从 Page_Load 事件处理程序调用的私有方法中
  • 下拉列表是否填充在后面的代码中?你什么时候绑定下拉菜单? EnableViewState 属性是否启用?肯定需要你的代码来调试这个问题。
【解决方案2】:

我发现他们唯一的解决方法类似于建议的ASP.NET - Google Chrome caching DropDownList selections。

我实际上添加了一个全局变量,该变量保存下拉列表中要选择的选项的值。我通过后面代码中的 Page.RegisterStartupScript 来做到这一点。

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

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

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

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多