Asp.net Ajax控制工具包:既然ToolkitScriptManager已经过时,如何只加载所需的脚本
我们正在使用Ajax控制工具包。 我们安装了这个: 我们已经使用ACT进行绑定,方法是在web配置中进行设置:Asp.net Ajax控制工具包:既然ToolkitScriptManager已经过时,如何只加载所需的脚本,asp.net,webforms,ajaxcontroltoolkit,Asp.net,Webforms,Ajaxcontroltoolkit,我们正在使用Ajax控制工具包。 我们安装了这个: 我们已经使用ACT进行绑定,方法是在web配置中进行设置: <asp:ScriptManager ID="sm" runat="server" EnableCdn="true" > <Scripts> <asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/Bundle" />
<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" >
<Scripts>
<asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/Bundle" />
</Scripts>
</asp:ScriptManager>
在主页上,我还有:
<%: System.Web.Optimization.Scripts.Render("~/Script/js-master") %>
我故意遗漏了SliderExtender(所以它不应该工作),但它仍然在工作,所以我猜所有Ajax控件工具包脚本都已加载
Web配置,也包括:
<compilation debug="false" targetFramework="4.5.1">
实际上,你可以。保留此功能是为了向后兼容
您不再需要显式地指定它。Toolkit扫描应用程序根目录中的AjaxControlToolkit.config
文件(特别是HttpRuntime.AppDomainAppPath
),并从中生成控制包。除了js脚本之外,Toolkit还将加载一些CSS文件。要防止加载这些带有css和图像内容的WebResource.axd,可以使用web.config:
<configSections>
<section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
</configSections>
<ajaxControlToolkit renderStyleLinks="false" />
要查看文件的内容,请在测试项目中安装nuget包AjaxControlToolkit.StaticResources
,其中包含所有图像、css和js
例如,我使用CalendarExtender,但我不希望额外的http请求来获取左右箭头,因此我已经定制了css,以使用我自己的通用sprite。与Combobox向下箭头相同,我实际上使用引导插入符号字符/样式而不是图像。我的根目录中还没有AjaxControlToolkit.config。我将添加它并指定我想要的脚本。要不要解释更多关于HttpRuntime.AppDomainAppPath设置的信息?我想,这是在web配置中配置的。不,它是硬编码的值:您需要将此捆绑包指定为脚本,就像默认捆绑包一样:请记住在捆绑包名称之前添加控件
:您可以在脚本管理器
中指定脚本引用
项,这是使工具箱正常工作所必需的。在大多数情况下,它位于母版页中。您可以再次检查以查看ScriptReference
实体语法。将bundle添加到BundleTable只是告诉我们可以使用它,但不会将任何bundle呈现到页面。如果您在AjaxBundle
之后命名ControlBundle,则路径应该类似于~/Scripts/AjaxControlToolkit/AjaxBundleBundle
。另外,请检查您没有其他绑定项,如~/Scripts/AjaxControlToolkit/bundle
,因此脚本可能会被加载两次。您不需要显式地将ScriptBundle
添加到BundleTable
中。您可以检查浏览器的开发人员控制台中实际加载了哪些脚本吗?也可能是您加载了CDN包。
<%: System.Web.Optimization.Scripts.Render("~/Script/js-master") %>
<compilation debug="false" targetFramework="4.5.1">
<configSections>
<section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/>
</configSections>
<ajaxControlToolkit renderStyleLinks="false" />