因此,基本上,我有一个母版页和数百个内容页。每个内容页面均包含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。如果我错了,请纠正我。如果我是对的,则第一种/第二种方式也是不可能的,因为仍然必须编辑内容页面,对吗?

最佳答案

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

母版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)
    {
    }
}

07-26 02:33