页面上有多个ScriptManagers

时间:2011-10-14 15:24:33

标签: asp.net telerik scriptmanager

我需要在页面上拥有多个脚本管理器,或者在生成页面后隐藏/删除一个脚本管理器。这是因为iPad的一些iframe解决方法。我的代码发布在下面,抱歉长代码块。感谢您提供的任何帮助。

主页:

<html>
<body>
<telerik:RadScriptManager ID="ScriptManager1" runat="server">
  <Scripts>
    <asp:ScriptReference Path="javascript/jquery.js" />
    <asp:ScriptReference Path="javascript/enforceMaxlength.js" />
  </Scripts>
</telerik:RadScriptManager>

<telerik:RadSplitter ID="rsMain" runat="server" Orientation="Vertical" Width="100%" BorderSize="0" PanesBorderSize="0" ResizeWithBrowserWindow="true">
  <telerik:RadPane id="rpContent" runat="server">
    <cc1:ScrollingIFrame id="sifMainContent" runat="server" Width="100%" Height="100%" />
  </telerik:RadPane>
</telerik:RadSplitter>

</body>
</html>

ScrollingIFrame用户控件:

<div id="theDiv" runat="server" style="position:relative; overflow:auto"></div>

<script type="text/javascript" charset="utf-8">
  $('#<%= theDiv.ClientID %>').load('TestPage.aspx', function () {});
</script>

TestPage.aspx:

<html>
<body>
  <form id="form1" runat="server">
    <div>
      <telerik:RadScriptManager ID="ScriptManager1" runat="server" />

      [A Bunch of Dynamically Generated Controls That Require a ScriptManager...]

    </div>
  </form>
</body>
</html>

为了澄清,最终的输出页面最终成为了这个的解析版本: (注意同一页面上的两个脚本管理器)

<html>
<body>
<form id="mainForm" runat="server">

<telerik:RadScriptManager ID="ScriptManager1" runat="server">
  <Scripts>
    <asp:ScriptReference Path="javascript/jquery.js" />
    <asp:ScriptReference Path="javascript/enforceMaxlength.js" />
  </Scripts>
</telerik:RadScriptManager>

<telerik:RadSplitter ID="rsMain" runat="server" Orientation="Vertical" Width="100%" BorderSize="0" PanesBorderSize="0" ResizeWithBrowserWindow="true">
  <telerik:RadPane id="rpContent" runat="server">
    <div id="theDiv" runat="server" style="position:relative; overflow:auto">
      <form id="form1" runat="server">
        <div>
          <telerik:RadScriptManager ID="ScriptManager1" runat="server" />

          [A Bunch of Dynamically Generated Controls That Require a ScriptManager...]

        </div>
      </form>
    </div>
  </telerik:RadPane>
</telerik:RadSplitter>

</form>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

页面上必须只有一个脚本管理器实例。在您的情况下,您尝试将两个页面合并为一个,这意味着两个脚本管理器将覆盖彼此的脚本。您需要从内部页面中删除RadScriptManager控件,并只在主页面中保留一个。要防止内部页面中的RadControls出现服务器错误,您应该为TestPage.aspx内部页面中的每个控件设置RegisterWithScriptManager = false。使用此属性,控件将呈现所需的所有内容,并依赖于其他位置的ScriptManager(在本例中为主页)。