2014-04-27 49 views
0

我們剛剛將我們的Telerik控件從2012.3.1308.45升級到2014.1.1403.45。因此,以前工作的頁面現在不會。RadWindowManager,RegisterScriptControl和具有相同ID問題的多個控件

最初的錯誤如下:

Script control 'RadWindowManager1' is not a registered script control. Script controls must be registered using RegisterScriptControl() before calling RegisterScriptDescriptors().

有一對夫婦在Telerik的網站關於這個帖子的。首選解決方案似乎是將控件上的RegisterWithScriptManager屬性設置爲false

這樣做會導致另一個錯誤彈出。所以,我不確定我是否會前進。新的錯誤是:

Multiple controls with the same ID 'RadWindowManager1_alerttemplate' were found. FindControl requires that controls have unique IDs.

該頁面在形式一堆Response.Write(...) ASP .NET表達式:<%=MyControl.ControlID%>。這些表達式中的每一個都會導致此錯誤。

在這一點上,我很難過。

Telerik網站上還有另一篇文章,建議在web.config中爲Telerik.Web.UI.WebResource.axd添加Location元素可以解決這個問題。我試過了,它沒有任何好處。

我也嘗試過使用微軟的ScriptManager而不是Telerik RadScriptManager,但這並沒有什麼好處。

我檢查了我的web.config重複條目,沒有。我不知道還有什麼要做。我很感謝在這個問題上的任何幫助。

對於它的價值,我已經取得了一些進展,或者將自己挖到更深處。我不知道:

使用第二個錯誤,多重控制問題,我發現我們在頁面上有兩個控件,我擺脫了。

首先,我刪除了:

<telerik:RadCodeBlock runat="server"></telerik:RadCodeBlock> 

爲主,此塊出現空的,因爲沒有任何在它的內部。不知道是否需要,但我刪除了它。

其次,我刪除了這一點:

<telerik:RadAjaxPanel ID="gridPanel" runat="server" LoadingPanelID="gridLoadingPanel"> 
      <telerik:RadAjaxLoadingPanel ID="gridLoadingPanel" runat="server" Transparency="5"> 
       <asp:Image ID="Image1" runat="server" AlternateText="Loading..." BorderWidth="0px" ImageUrl="~/App_Themes/Default/Images/Administration/Loading.gif"></asp:Image> 
      </telerik:RadAjaxLoadingPanel> 

其存在,但並沒有被使用的。

當我這樣做,我得到了另一個新的和令人興奮的錯誤:

RegisterForEventValidation can only be called during Render();

使用谷歌,我發現了一個解決方案是這樣:

  1. 添加EnableEventValidation =「假「到Page指令。

  2. 在沒有任何內容的代碼中覆蓋VerifyRenderingInServerForm。

做了,現在出現一個更加新的和令人興奮的錯誤。

Script control 'nameOfControl' is not a registered script control. Script controls must be registered using RegisterScriptControl() before calling RegisterScriptDescriptors().

所討論的控件是在表格中顯示的RadNumericTextBox。

因此,無論我是在這裏深入還是深入兔子洞,還是我正在緩慢地解決多個錯誤。我不知道它是什麼。

儘管如此,尋找這最後一個錯誤並沒有給我任何具體的工作。任何額外的幫助,將不勝感激。

回答

0

確保您沒有爲Telerik控件設置爲靜態的ClientIDMode。

然後,如果你使用AJAX,在RadCodeBlock標籤包裹服務器代碼塊(一些服務器代碼塊)

帶走AjaxControlToolkit如果你有的話,它的輸出改變MS AJAX腳本。

如果使用部分回發

不要使用的Response.Write()等如果沒有幫助,一塊剝離下來的頁面片發現問題(例如,一些自定義你在的地方) 。

+0

祕密是圍繞腳本包裝RadCodeBlock,並且(可能)刪除AjaxControlToolKit程序集(Telerik建議這個,我做了)。我無法對我的頁面上的大量Response.Write(...)表達式做任何事情,但問題似乎已解決。 – Dan7el

0

對我來說,它有助於設置RegisterWithScriptManager =「true」。

相關問題