你還在用ASP.NET Web Forms嗎?如果在用的話,你可要小心了:
千萬不要使用LinkButton控件!
為什么呢?
請看ASP.NET代碼:
<asp:LinkButton Text="Post" runat="server" id="lbPost"/>
請看運行時的頁面HTML代碼:
<a id="MainContent_lbPost" href="javascript:__doPostBack('ctl00$MainContent$Post','')">Post</a>
問題來了!根據我們遇到的實際情況,某個未知的軟件會造成在點擊"Post"鏈接時Javascript代碼不能正常執行(可能這個軟件是出於安全考慮),引發“WebForm_PostBackOptions is not defined"異常。
這個問題困擾了我們一個多月,問題是多個用戶反饋的。而我們無法重現這個問題,解決起來很棘手,最后,一閃而過的想法才讓我們猜測到這個原因。
解決方法
棄用asp:LinkButton,改用asp:Button。
該方法已經通過驗證,之前遇到這個問題的用戶已經確認問題已解決。
由於無法重現這個問題,我們無法找出究竟是哪個未知軟件引起的。
小結
問題很簡單,解決方法也很簡單,但這個問題的現象不具獨特性,很費周折,網上一搜索,滿網盡是“WebForm_PostBackOptions is not defined",當時找到的覺得稍微有點價值的是WebResource.axd動態壓縮可能會引起這個問題,卻讓我們誤入歧途,浪費了很多時間。在幾乎絕望,准備用ASP.NET MVC重寫整個頁面時,問題的線索一下子蹦了出來。那種感覺你懂的!
也許從外人看來程序員性格內向、缺乏情趣,可是他們沒有看到程序員在解決問題時眼中放出的光芒,他們也不知道程序員內心所經歷的精彩世界!
讓他們知道吧,用博客寫出程序員的精彩世界!
推薦閱讀