因此,基本上,我有一个母版页和数百个内容页。每个内容页面均包含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)
{
}
}