2012年2月15日 星期三

踩到 AjaxControlToolkit 3.5 的地雷


今天開開心的下載了最新版的 AjaxControlToolkit 4.0,也把它整合到我的 VS2010,想測測 Tab 功能。但腦筋突然閃過「User 那邊只有 .Net 3.5 的環境」,就只好再回去下載 AjaxControlToolkit 3.5。

我將 VS2010 的環境調整為 .net framework 3.5 ,也同時將  AjaxControlToolkit 3.5 加入了參考,但執行時,卻跑了錯誤出來。

AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll.

真是奇怪了,明明就下載 AjaxControlToolkit 3.5 的版本,卻要求我要用 4.0 ,這樣對嗎?仔細消化了這一段錯誤訊息,終於瞭解了他想要描述甚麼。不過這突然讓我反省到,自己所寫的系統發出錯誤訊息時,往往只是「系統發生錯誤,請聯絡 XXX」。相較之下,人家已經比我詳細多了。

原來我在使用 AjaxControlToolkit 所提供的元件時,依例都會在頁面最上面擺放一個 <asp:scriptmanager id="ScriptManager1" runat="server"> </asp:scriptmanager>,但是這個錯誤訊息,是叫我不要使用 ScriptManager ,改成用 ToolkitScriptManager。問題是,要怎麼改才對呢? 原來,是要改成以下方式:

<asp:toolkitscriptmanager id="ScriptManager1" runat="server"></asp:toolkitscriptmanager>

如此修改後,程式就可以正常執行了。另外,In 91 有說章立民老師文章中提及的「為了讓JavaScript檔案能夠先壓縮再下載,以便提昇下載效率並降低請求(Request)次數,請大家在設計ASP.NET AJAX網頁時,應該盡量使用ToolkitScriptManager來取代ScriptManager。」,倒是意外的發現。

參考:http://www.dotblogs.com.tw/hatelove/archive/2009/02/17/7211.aspx

2 則留言:

  1. Visual Studio 2012更新過Update1與Update2後就沒這個問題了

    回覆刪除
    回覆
    1. http://tw.myblog.yahoo.com/akira32-akira32/article?mid=1799&prev=-1&next=1796

      刪除