问题描述:在IE10中点击updatepanel里面的imagebutton时出现“输入字符串的格式不正确”的错误,在其它浏览器以及IE7/8/9无此问题
异常消息:
输入字符串的格式不正确。 在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 在 System.Web.UI.WebControls.ImageButton.LoadPostData(String postDataKey, NameValueCollection postCollection) 在 System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
在vs中调试时会出现javascript运行时错误:
Sys.WebForms.PageRequestManagerServerErrorException: Input string was not in a correct format.
<asp:UpdatePanel runat="server" ID="up" UpdateMode="Conditional"> <ContentTemplate> <asp:DexGrid ID="myGrid" runat="server"> </asp:DexGrid> <asp:DexPagerBar ID="myPager" runat="server" OwnerControlID="myGrid"> </asp:DexPagerBar> </ContentTemplate> <Triggers> </Triggers> </asp:UpdatePanel>
解决方法:在所属页面或所在模板页中加入如下脚本即可解决
<script type="text/javascript"> //为解决在IE10中点击updatepanel里面的imagebutton时出现的错误 Sys.WebForms.PageRequestManager.getInstance()._origOnFormActiveElement = Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive; Sys.WebForms.PageRequestManager.getInstance()._onFormElementActive = function(element, offsetX, offsetY) { if (element.tagName.toUpperCase() === 'INPUT' && element.type === 'image') { offsetX = Math.floor(offsetX); offsetY = Math.floor(offsetY); } this._origOnFormActiveElement(element, offsetX, offsetY); }; </script>