ToolkitScriptManager vs. ScriptManager 关于“只能向页面中添加 ScriptManager 的一个实例”讨论
在使用ASP.NET设计AJAX功能网页时,需要首先声明ToolkitScriptManager或者ScriptManager控件,这些全局的脚本核心控制,然后才能使用众多的AJAX控件。如果没有创建这两个控件之一就直接使用AJAX控件,运行网页时会出现错误。
就ToolkitScriptManager或ScriptManager来说,其作用是相同的,但实际使用中,注意到有如下情况出现(使用Visual Studio 2012版本):
1、在使用Ajax Control Toolkit中的控件时,如果声明ToolkitScriptManager,则控件正常可以使用;但如果声明ScriptManager,那么控件不能使用,但也不出现错误信息。
2、在使用VS2012本身自带的UpdatePanel时,笔者以往的用法(VS008)是声明ScriptManager,因为UpdatePanel与ScriptManager都在AJAX Extensions的Tab内,在VS2012中这种用法同样可以的;如果不声明ScriptManager而声明ToolkitScriptManager也可以使用UpdatePanel;但如果ToolkitScriptManager和ScriptManager两个同时在网页内声明,如下例:
<body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="Server" EnableScriptGlobalization="True" /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div id="content">
则出现“只能向页面中添加 ScriptManager 的一个实例”错误,所以,只能使用其中一个Manager,否则两个就会打架;
3、 网上有较详尽的分析文章,说明ToolkitScriptManager的性能比ScriptManager性能更好
综合以上分析,因此可以总结如下:
在使用ASP.NET设计AJAX网页时,尽量声明使用ToolkitScriptManager,它可以完成AJAX的所有工作,并且性能更佳,而ScriptManager有部分工作无法完成(AJAX Control Toolkit部分),并且性能稍差。