最近,我们在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)
答案 0 :(得分:7)
只需安装.NET Framework 4.5即可解决此问题。
这个问题可能是由ImageButton IE10错误导致的,IE10错误地将坐标转换为十进制而不是整数。这导致在IE10上的许多(如果不是大多数情况)情况下,ImageButton点击失败。
即使您不将应用程序池切换到.NET Framework 4.5,也可以解决此问题。
就我而言,我在.NET Framework 3.5上离开了应用程序池。显然安装.NET Framework 4.5会覆盖其他框架版本的一些文件。
请参阅变通方法部分here
答案 1 :(得分:3)
IE10有一个错误。如果您开发一个新的aspx页面,并使用updatepanels ajaxify页面, 页面将无法正常工作。没有服务器事件将触发。但是其他浏览器也可以完成它们的工作。我想知道为什么微软没有发现/修复这个问题。我用强制IE9模式处理了这个问题
<meta http-equiv="x-ua-compatible" content="IE=9" />
答案 2 :(得分:3)
将ImageButton更改为LinkButton并将图像放在其中。
这是一个很好的解决方法,这对我有用。
答案 3 :(得分:0)
我将ImageButton更改为LinkButton并将按钮图像放在其中。的工作原理。
答案 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中的更新面板无法正常工作。