[ASP.NET]LinkButton控件引起的“WebForm_PostBackOptions is not defined"

你还在用ASP.NET Web Forms吗?如果在用的话,你可要小心了:

千万不要使用LinkButton控件!

为什么呢?

请看ASP.NET代码:

<asp:LinkButton Text="Post" runat="server" id="lbPost"/>

请看运行时的页面HTML代码:

<a id="MainContent_lbPost" href="javascript:__doPostBack(&#39;ctl00$MainContent$Post&#39;,&#39;&#39;)">Post</a>

问题来了!根据我们遇到的实际情况,某个未知的软件会造成在点击"Post"链接时Javascript代码不能正常执行(可能这个软件是出于安全考虑),引发“WebForm_PostBackOptions is not defined"异常。

这个问题困扰了我们一个多月,问题是多个用户反馈的。而我们无法重现这个问题,解决起来很棘手,最后,一闪而过的想法才让我们猜测到这个原因。

解决方法

弃用asp:LinkButton,改用asp:Button。

该方法已经通过验证,之前遇到这个问题的用户已经确认问题已解决。

由于无法重现这个问题,我们无法找出究竟是哪个未知软件引起的。

小结

问题很简单,解决方法也很简单,但这个问题的现象不具独特性,很费周折,网上一搜索,满网尽是“WebForm_PostBackOptions is not defined",当时找到的觉得稍微有点价值的是WebResource.axd动态压缩可能会引起这个问题,却让我们误入歧途,浪费了很多时间。在几乎绝望,准备用ASP.NET MVC重写整个页面时,问题的线索一下子蹦了出来。那种感觉你懂的!

也许从外人看来程序员性格内向、缺乏情趣,可是他们没有看到程序员在解决问题时眼中放出的光芒,他们也不知道程序员内心所经历的精彩世界!

让他们知道吧,用博客写出程序员的精彩世界!

 

推荐阅读

献给奋战在一线的程序员:关于性格内向者的10个误解

posted @ 2012-01-30 11:55  博客园团队  阅读(4509)  评论(16编辑  收藏  举报