金锣软件开发组

团队、合作、共享

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

问题:Anthem:ImageButton在IE8下抛出“输入字符串的格式不正确”异常

重现:在页面中加入一个Anthem的ImageButton,创建并编写事件代码。在IE8下浏览时出现以下错误提示:

 

代码
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

堆栈跟踪: 


[FormatException: 输入字符串的格式不正确。]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +7471479
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119
   System.Web.UI.WebControls.ImageButton.LoadPostData(String postDataKey, NameValueCollection postCollection) +163
   System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +14
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +693
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1743

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.3607; ASP.NET 版本:2.0.50727.3082 

 

解决:(参见:http://www.ezboxx.com/ezboxx/forums/thread-view.asp?tid=3460&posts=4

Chanage the following function inside anthem.js:
Anthem_SetHiddenInputValue 
 
To be the following:
 
function Anthem_SetHiddenInputValue(form, name, value) {
   var input = null;
   if (form[name]) {
       input = form[name];
   }
else {
       input = document.createElement(
"input");
       input.setAttribute(
"name", name);
       input.setAttribute(
"type", "hidden");
   }
   input.setAttribute(
"value", value);
   var parentElement = input.parentElement ? input.parentElement : input.parentNode;
   if (parentElement == null) {
       form.appendChild(input);
       //IE7
       try { form[name] = input; } catch (e) { }
    }
}

Recompile the DLL, and everything works now.

posted on 2010-03-22 08:48  新程金锣  阅读(547)  评论(0编辑  收藏  举报