2014-04-27 50 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”。

相关问题