5

最近,我们在 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)

4

5 回答 5

7

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

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

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

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

请参阅此处的解决方法部分

相关:IE10 发送带小数(浮点值)的图像按钮单击坐标导致 ParseInt32 FormatException

于 2013-03-11T15:51:14.920 回答
3

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

<meta http-equiv="x-ua-compatible" content="IE=9" />
于 2013-05-23T08:31:23.627 回答
3

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

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

于 2015-06-18T20:12:04.283 回答
0

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

于 2013-10-23T17:07:36.977 回答
0

您可以在 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 中无法通过按钮单击、图像等正常工作。

于 2013-11-13T21:46:05.610 回答