Ajax contol 工具包:既然 ToolkitScriptManager 已过时,如何只加载需要的脚本
Ajax contol toolkit: how to load only scripts needed now that ToolkitScriptManager is obsolete
我们正在使用 Ajax 控制工具包。
我们安装了这个:
https://www.nuget.org/packages/AjaxControlToolkit.StaticResources/
我们已经使用 ACT 进行捆绑,通过在网络配置中设置它:
<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/Bundle" />
</Scripts>
</asp:ScriptManager>
我们正在优化页面,我们注意到,该脚本将近 1MB。
这个:
AJAX Control Toolkit Loading All Scripts
还有这个:
http://stephenwalther.com/archive/2013/07/25/july-2013-release-of-the-ajax-control-toolkit
会解决我们的问题。
但是在新版本的 Ajax 中,Control Toolkit ajaxToolkit:ToolkitScriptManager 已过时,因此我们不能在脚本管理器中使用 ControlBundles。
我的问题是:如何只加载我们需要的脚本(我们正在使用下拉菜单、评级和滑块)?
我们正在使用:
Ajax 控制工具包 16.1.0
.net 框架 4.5.1
编辑:到目前为止我做了什么:
将 AjaxControlToolkit.config 添加到根并插入此
<?xml version="1.0"?>
<ajaxControlToolkit>
<controlBundles>
<controlBundle name="AjaxBundle">
<control name="CalendarExtender" />
<control name="ComboBox" />
</controlBundle>
</controlBundles>
</ajaxControlToolkit>
已将脚本管理器添加到主页:
<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/AjaxBundleBundle" />
</Scripts>
</asp:ScriptManager>
将此添加到全局 asax 以启动应用程序:
BundleTable.Bundles.Add(new ScriptBundle("~/Script/js-master".Include("~/Scripts/AjaxControlToolkit/AjaxBundle"));
主页上我还有:
<%: System.Web.Optimization.Scripts.Render("~/Script/js-master") %>
我故意错过了滑块扩展器(所以它不应该工作),但它仍然工作,所以我猜所有 Ajax Control Toolkit 脚本都已加载。
Web 配置,还有:
<compilation debug="false" targetFramework="4.5.1">
事实上,你可以。保留此功能是为了向后兼容。
您不需要再明确指定它。 Toolkit 在应用程序根目录(具体来说,HttpRuntime.AppDomainAppPath
)中扫描 AjaxControlToolkit.config
文件,并从中生成控制包。
除了 js 脚本之外,该工具包还将加载几个 CSS 文件。为了防止它用 css 和图像内容加载这些 WebResource.axd,您可以使用 web.config:
<configSections>
<section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
</configSections>
<ajaxControlToolkit renderStyleLinks="false" />
要查看文件的内容,在测试项目中,安装包含所有图像、css 和 js 的 nuget 包 AjaxControlToolkit.StaticResources
。
例如,我使用 CalendarExtender,但我不想通过额外的 http 请求来获取左右小箭头,因此我自定义了 css 以使用我自己的通用 sprite。与组合框向下箭头相同,我实际上使用 Bootstrap 插入符号 character/style 而不是图像。
我们正在使用 Ajax 控制工具包。 我们安装了这个:
https://www.nuget.org/packages/AjaxControlToolkit.StaticResources/
我们已经使用 ACT 进行捆绑,通过在网络配置中设置它:
<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/Bundle" />
</Scripts>
</asp:ScriptManager>
我们正在优化页面,我们注意到,该脚本将近 1MB。
这个:
AJAX Control Toolkit Loading All Scripts
还有这个:
http://stephenwalther.com/archive/2013/07/25/july-2013-release-of-the-ajax-control-toolkit
会解决我们的问题。
但是在新版本的 Ajax 中,Control Toolkit ajaxToolkit:ToolkitScriptManager 已过时,因此我们不能在脚本管理器中使用 ControlBundles。
我的问题是:如何只加载我们需要的脚本(我们正在使用下拉菜单、评级和滑块)?
我们正在使用:
Ajax 控制工具包 16.1.0
.net 框架 4.5.1
编辑:到目前为止我做了什么: 将 AjaxControlToolkit.config 添加到根并插入此
<?xml version="1.0"?>
<ajaxControlToolkit>
<controlBundles>
<controlBundle name="AjaxBundle">
<control name="CalendarExtender" />
<control name="ComboBox" />
</controlBundle>
</controlBundles>
</ajaxControlToolkit>
已将脚本管理器添加到主页:
<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/AjaxBundleBundle" />
</Scripts>
</asp:ScriptManager>
将此添加到全局 asax 以启动应用程序:
BundleTable.Bundles.Add(new ScriptBundle("~/Script/js-master".Include("~/Scripts/AjaxControlToolkit/AjaxBundle"));
主页上我还有:
<%: System.Web.Optimization.Scripts.Render("~/Script/js-master") %>
我故意错过了滑块扩展器(所以它不应该工作),但它仍然工作,所以我猜所有 Ajax Control Toolkit 脚本都已加载。
Web 配置,还有:
<compilation debug="false" targetFramework="4.5.1">
事实上,你可以。保留此功能是为了向后兼容。
您不需要再明确指定它。 Toolkit 在应用程序根目录(具体来说,HttpRuntime.AppDomainAppPath
)中扫描 AjaxControlToolkit.config
文件,并从中生成控制包。
除了 js 脚本之外,该工具包还将加载几个 CSS 文件。为了防止它用 css 和图像内容加载这些 WebResource.axd,您可以使用 web.config:
<configSections>
<section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
</configSections>
<ajaxControlToolkit renderStyleLinks="false" />
要查看文件的内容,在测试项目中,安装包含所有图像、css 和 js 的 nuget 包 AjaxControlToolkit.StaticResources
。
例如,我使用 CalendarExtender,但我不想通过额外的 http 请求来获取左右小箭头,因此我自定义了 css 以使用我自己的通用 sprite。与组合框向下箭头相同,我实际上使用 Bootstrap 插入符号 character/style 而不是图像。