【问题标题】:ImageButton does not fire a post back on IE10ImageButton 不会在 IE10 上触发回帖
【发布时间】:2013-02-26 03:36:35
【问题描述】:

最近,我们在 IE10 上测试了我们的产品,遇到了服务器按钮控件“Asp:ImageButton”在 IE10 上使用 UpdatePanel 无法触发的问题。 以下是示例代码:

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        Here is the content.
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="buttonSubmit" />
    </Triggers>
</asp:UpdatePanel>
<br />
<br />
<asp:Button ID="buttonSubmit" runat="server" ToolTip="Submit" OnClick="buttonSubmit_Click" />
</form>

服务器端:

    protected void buttonSubmit_Click(object sender, ImageClickEventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "alert", "alert('It works.')", true);
    }

这里有两件事让我感到困惑: 一个是问题只发生在我部署在 IIS 上并且在 VS 上调试时工作正常。 二是如果我删除了上面的两个标签“br”,该事件将被触发。此外,如果我将 ImageButton 更改为 Button,该事件也会被触发。

所以,不知道是我遗漏了什么还是误解了ImageButton和Button控件的生命周期。 任何帮助将不胜感激。

测试环境:VS2010、IIS 7.5、IE10(10.0.9200.16484)

【问题讨论】:

  • 在此处查看我的答案和其他答案:stackoverflow.com/a/15129393/127880 我怀疑您的问题源于新的 IE10 ImageButton 错误。我安装了 .NET Framework 4.5(即使我的 IIS 站点运行的是 3.5)并且 IE10 和 imagebuttons 的问题已得到修复。
  • 感谢您的快速回复,乔治。好消息是它只需升级框架即可工作。再次感谢。
  • 好消息。我发布了答案,以便我们可以为路人提供更多帮助

标签: asp.net postback internet-explorer-10


【解决方案1】:

将 ImageButton 更改为 LinkBut​​ton 并将图像放入其中。

这是一个很好的解决方法,对我有用。

【讨论】:

    【解决方案2】:

    你可以在 Page_PreRender 中做同样的事情

    private bool alert;
    protected void buttonSubmit_Click(object sender, EventArgs e)
        {
    
            alert= true;
            ViewState["alert"] = alert;
        }
    
    protected void Page_PreRender(object sender, EventArgs e)
        {
            if (ViewState["alert"] != null)
                alert= (bool)ViewState["alert"];
            if (alert)
            {
                alert= false;
                ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "alert", "alert('It works.')", true);
    
            }
        }
    

    更新面板在 IE 10 中无法通过按钮点击、图像等正常工作。

    【讨论】:

      【解决方案3】:

      我将 ImageButton 更改为 LinkBut​​ton 并将按钮图像放入其中。有效。

      【讨论】:

        【解决方案4】:

        IE10 有一个错误。如果您开发一个新的 aspx 页面并使用更新面板对页面进行 ajaxify, 该页面将无法正常工作。不会触发任何服务器事件。但是其他浏览器会做得很好。我想知道为什么微软没有注意到/修复这个问题。我处理了强制 IE9 模式的问题

        <meta http-equiv="x-ua-compatible" content="IE=9" />
        

        【讨论】:

          【解决方案5】:

          只需安装 .NET Framework 4.5 即可解决此问题。

          此问题可能是由 ImageButton IE10 错误引起的,该错误涉及 IE10 错误地将坐标转换为十进制而不是整数。这会导致在 IE10 上的许多(如果不是大多数)情况下单击 ImageButton 失败。

          即使您不将应用程序池切换到 .NET Framework 4.5,这也可以解决问题。

          就我而言,我将应用程序池保留在 .NET Framework 3.5 中。显然安装 .NET Framework 4.5 会覆盖其他框架版本的一些文件。

          请参阅解决方法部分here

          相关:IE10 sending image button click coordinates with decimals (floating point values) causing a ParseInt32 FormatException

          【讨论】:

          • 小心这个。 4.5 是就地更新,而不是并行更新。如果您已经在 4.0 下运行站点,升级可能会导致问题。它应该是向后兼容的,但人们已经记录了重大更改。
          猜你喜欢
          • 2023-04-01
          • 1970-01-01
          • 2013-10-24
          • 1970-01-01
          • 1970-01-01
          • 2012-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多