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。

我的问题是:如何只加载我们需要的脚本(我们正在使用下拉菜单、评级和滑块)?

我们正在使用:

编辑:到目前为止我做了什么: 将 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 而不是图像。