脚本管理器和工具包脚本管理器的区别

21
< p > ScriptManagerToolkitScriptManager 有什么区别?我只找到了一个令人信服的理由:即ToolkitScriptManager可以提高页面性能。如果是这样,为什么还要使用 ScriptManager 呢?

1个回答

28
首先:如果您使用ASP.NET 3.5并使用来自AJAX Control Tookit的控件,则必须使用ToolkitScriptManager而不是ASP.NET ScriptManager。这是因为工具包脚本管理器会添加更新的Ajax脚本,没有这些脚本大部分来自Ajax Control Toolkit库的控件将无法工作。
如果您使用ASP.NET 4.0(4.5),则可以选择使用ScriptManager或ToolkitScriptManager。
基本上,ToolkitScriptManager的主要特点是可以通过ScriptReference集合将js资源添加到页面中进行组合。这些js文件应该嵌入到程序集中,并且必须添加Assembly ScriptCombine程序集属性。这里的主要问题是您无法控制如何组合脚本,当您尝试组合自己的脚本时,可能会遇到许多问题(我有使用此功能的经验,结果我们拒绝使用这种方法来组合我们的脚本)。
主要问题在于当前标准脚本管理器具有使用复合脚本集合组合脚本的功能。该功能更加灵活,更容易控制页面上的脚本如何组合。您可以通过以下链接获取更多信息:http://weblogs.asp.net/infinitiesloop/archive/2009/11/23/asp-net-4-0-scriptmanager-improvements.aspx
此外,请注意,据我所记得,如果您使用ToolkitScriptManager,则将无法使用CompositeScript功能,即使考虑到ToolkitScriptManager派生自ScriptManager。
因此,在ASP.NET 4.0中,差异并不大,最好避免使用ToolkitScriptManager。主要原因是使用标准的CompositeScript功能,您可以更好地控制脚本如何组合,并可优化页面的渲染。
如果要使用Ajax Control Toolkit库中的控件,则在ASP.NET 3.5中没有选择权。

随着ajax控件工具包库的最新更改,它们继续更新MS Ajax脚本,因此一些控件在没有添加ToolkitScriptManager的情况下无法工作。


如果您使用Ajax Control Toolkit控件 - 您应该将您的“ScriptManager”替换为“ToolkitScriptManager”。我知道在简单的情况下所有的东西都可以正常工作,但是在更深层次的情况下,比如将ajax-ctk控件放入一个用户控件或主页中,问题可能会开始出现...并且将它们转移到您没有替换的脚本管理器需要花费宝贵的时间! - G.Y
@G.Y你能详细说明一下为什么在使用ASP.NET 4.0或更高版本开发应用程序时需要将“ScriptManager”替换为“ToolkitScriptManager”吗?我开发了大量支持客户端的自定义控件,这些控件基于Ajax Control Toolkit的API,因此前段时间我花费了相当多的时间来审查Ajax Control Tookit库的源代码。而我支持几个基于ASP.NET Web Forms的相当大的商业Web应用程序的经验告诉我,没有“ToolkitScriptManager”也可以正常工作。 - Maxim Kornilov
Maxim,我需要很大的空间来详细解释它...现在只需创建一个新项目,添加CTK并创建一个带有MultiHandleSliderExtender的页面 - 基本脚本管理器=所有将工作..现在将其制作为用户控件并将其放入页面中..不会工作:) 将脚本管理器替换为CTK脚本管理器-再次全部工作..简而言之,CTK脚本管理器会带来更新,这对于某些CTK控件可能是“必须”的。 - G.Y
1
首先:使用 AJAX Control Tookit .NET 3.5 中的控件的页面必须使用 ToolkitScriptManager,而不是 ASP.NET ScriptManager。我们已经使用了 AjaxControlToolkit 控件多年,并且仍在使用 ScriptManager。没有 ToolkitScriptManager 应用程序仍然可以工作,因此您的说法并不完全正确。 - Neil
@Neil 看来我没有正确说明我的需求。更准确的说法应该是:“首先:如果你使用 ASP.NET 3.5 和 AJAX Control Tookit 中的控件,那么你必须使用 ToolkitScriptManager,而不是 ASP.NET ScriptManager。” 我还在 .Net Framework 4.0 上的几个生产项目中使用 ScriptManager 和 Ajax Control Toolkit 库。因此,我更新了我的答案。 - Maxim Kornilov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接