脚本管理器和工具包脚本管理器的区别
Posted
技术标签:
【中文标题】脚本管理器和工具包脚本管理器的区别【英文标题】:Difference between script manager and toolkit script manager 【发布时间】:2011-09-14 23:16:52 【问题描述】:ScriptManager
和 ToolkitScriptManager
有什么区别?我发现只有一个令人信服的理由:ToolkitScriptManager
提高了页面性能。如果是这样,为什么要使用ScriptManager
?
【问题讨论】:
【参考方案1】:首先:如果您使用 ASP.NET 3.5 和来自 AJAX Control Tookit 的控件,那么您必须使用 ToolkitScriptManager,而不是 ASP.NET ScriptManager。这个限制是因为工具包脚本管理器添加了更新的 Ajax 脚本,没有这个限制,来自 Ajax Control 工具包库的大多数控件都将无法工作。
如果您使用 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 功能,您可以更好地控制脚本的组合方式,并可以优化页面的呈现。
对于 ASP.NET 3.5,如果您想使用 Ajax Control Toolkit 库中的控件,您别无选择。
编辑
随着 ajax 控件工具包库的最新变化,他们继续更新 MS Ajax 脚本,这就是为什么如果不添加 ToolkitScriptManager 某些控件将无法工作的原因。
【讨论】:
如果您使用 Ajax Control Toolkit Controls - 您应该将“ScriptManager”替换为“ToolkitScriptManager”。我知道,在简单的情况下,所有情况都可以在不进行替换的情况下工作,但在更深层次的情况下,例如将 ajax-ctk 控件放入用户控件或母版页问题可能会开始出现......并且需要宝贵的时间来发起将它们发送给您没有替换的脚本管理器! @G.Y 如果您使用 ASP.NET 4.0 或更高版本开发应用程序,您能否详细说明为什么需要将“ScriptManager”替换为“ToolkitScriptManager”。我开发了大量具有客户端支持的自定义控件,这些控件基于 Ajax Control Toolkit 的 API,这就是为什么前一段时间我花了足够的时间查看 Ajax Control Tookit 库的源代码。我支持几个基于 ASP.NET Web 表单的大型商业 Web 应用程序的经验告诉我,在没有“ToolkitScriptManager”的情况下一切正常。 Maxim,我需要大量的空间来详细解释它。现在只需创建一个新项目,添加 CTK 并使用 MultiHandleSliderExtender 创建一个页面 - 使用基本脚本管理器 = 所有将工作..现在对其进行用户控制并将其放在页面中..将无法工作:)将脚本管理器替换为CTK脚本管理器-一切都重新工作了..简而言之,ctk脚本管理器会带来更新,这可能是“必须”到某些 ctk 控件。 “首先:使用 AJAX Control Tookit .NET 3.5 中的控件的页面必须使用 ToolkitScriptManager,而不是 ASP.NET ScriptManager。”多年来,我们一直在使用 AjaxControlToolkit 控件,并且仍然使用 ScriptManager。该应用程序在没有 ToolkitScriptManager 的情况下仍然可以工作,因此您的说法并不完全正确。 @Neil 看来我没有正确指定我想要的内容。更正确的短语应该是“首先:如果您使用 ASP.NET 3.5 和 AJAX Control Tookit 中的控件,那么您必须使用 ToolkitScriptManager,而不是 ASP.NET ScriptManager。”我还将 ScriptManager 和 Ajax Control Toolkit 库用于 .Net Framework 4.0 上的多个生产项目。所以,我更新了我的答案。以上是关于脚本管理器和工具包脚本管理器的区别的主要内容,如果未能解决你的问题,请参考以下文章