【问题标题】:Multiple ScriptManager on Master and Content Pages母版页和内容页上的多个 ScriptManager
【发布时间】:2014-04-12 16:43:32
【问题描述】:

所以基本上,我有一个母版页和数百个内容页。每个内容页面都包含ToolKitScriptManager。现在,我想在母版页上添加ScriptManager,当我尝试执行时,错误显示"Only one instance of a ScriptManager can be added to the page."

我知道我必须评论/删除每个内容页面上的每个 ToolKitScriptManager 行。但出于某种原因,我不能编辑数百个内容页面,只是为了删除那些 ToolkitScriptManager 代码。

我想问的是,有什么解决方案可以让我以编程方式从母版页的后台代码中禁用ToolkitScriptManager(在内容页上),这样我就不必编辑我的数百个内容页了?

编辑:

从这个答案的问题:How to use AJAX in master page when content pages have ScriptManager?,他可以给出 3 种方式。最后一种方法是不可能的,因为我仍然需要编辑内容页面。但是,我不明白他写的关于第一种和第二种方式的内容。如果我必须用这个包装内容页面的ToolKitScriptManager

<asp:ContentPlaceHolder ID="PlaceHolderID" runat="server" >>
</asp:ContentPlaceHolder>

然后母版页的ScriptManager 将覆盖内容页的ToolKitScriptManager。如果我错了,请纠正我。如果我是对的,第一种/第二种方式也是不可能的,因为仍然需要编辑内容页面,对吧?

【问题讨论】:

  • 你知道,如果所有脚本管理器都写得完全一样,就像真的完全一样,只需搜索并用空白“”替换它们
  • @Banana asp里的scriptManager代码怎么可以换成空白???
  • 你想评论它对吗?就像从页面中删除它一样。所以只需用空白替换它,就像删除它一样。我假设写了数百页的人都不会费心定制脚本管理器,所以都是一样的,只是搜索并用空白替换它们。
  • 我的意思是使用 Visual Studio 进行搜索和替换,而不是以编程方式,这真的是不可能的。
  • @Banana 我不允许更改内容页面,甚至是字符。还有其他解决方案吗?

标签: javascript jquery asp.net .net ajax


【解决方案1】:

在您的母版页中,处理您在 Init 上的脚本管理器,并在每次加载您的母版页的脚本管理器时从内容页中删除工具包脚本管理器:

MasterPage ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server" OnInit="ScriptManager1_Init"></asp:ScriptManager>

MasterPage 代码背后:

protected void ScriptManager1_Init(object sender, EventArgs e)
{
    try
    {
        foreach (Control _ctrl in ContentPlaceHolder1.Controls)
        {

            if (_ctrl.GetType() == typeof(AjaxControlToolkit.ToolkitScriptManager))
            {
                ContentPlaceHolder1.Controls.Remove(_ctrl);
                break;
            };
        }
    }
    catch (Exception ex)
    {
    }
}

【讨论】:

  • 终于,它起作用了。感谢您为帮助我付出的时间和精力。谢谢!上帝保佑像你这样乐于助人的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2015-06-28
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多