ImageButton不会在IE10上发回帖子

时间:2013-03-11 02:54:55

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

最近,我们在IE10上测试了我们的产品,并遇到了一个问题,即服务器按钮控件“Asp:ImageButton”不会在带有UpdatePanel的IE10上触发。 以下是示例代码:

<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)

5 个答案:

答案 0 :(得分:7)

只需安装.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

答案 1 :(得分:3)

IE10有一个错误。如果您开发一个新的aspx页面,并使用updatepanels ajaxify页面, 页面将无法正常工作。没有服务器事件将触发。但是其他浏览器也可以完成它们的工作。我想知道为什么微软没有发现/修复这个问题。我用强制IE9模式处理了这个问题

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

我将ImageButton更改为LinkBut​​ton并将按钮图像放在其中。的工作原理。

答案 4 :(得分: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中的更新面板无法正常工作。