2016-06-03 1 views
1

Nous utilisons le toolkit Ajax Control. Nous avons installé ceci:Ajax contol toolkit: comment charger uniquement les scripts nécessaires maintenant que ToolkitScriptManager est obsolète

https://www.nuget.org/packages/AjaxControlToolkit.StaticResources/

Nous avons déjà utilisé ACT pour empaqueter, en le plaçant dans la configuration web:

<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" > 
      <Scripts> 
       <asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/Bundle" /> 
      </Scripts> 
     </asp:ScriptManager> 

Nous optimisons la page et nous avons remarqué, ce script est presque 1Mo.

Ce:

AJAX Control Toolkit Loading All Scripts

et ceci:

http://stephenwalther.com/archive/2013/07/25/july-2013-release-of-the-ajax-control-toolkit

résoudrait notre problème. Mais dans les nouvelles versions d'Ajax Control Toolkit ajaxToolkit: ToolkitScriptManager est obsolète, donc nous ne pouvons pas utiliser ControlBundles dans le gestionnaire de scripts.

Ma question est: comment charger seulement les scripts dont nous avons besoin (nous utilisons le menu déroulant, le classement et le slider)?

Nous utilisons:

  • Ajax Toolkit contrôle 16.1.0

  • NET Framework 4.5.1

Edit: ce que je l'ai fait jusqu'à présent: ajouté AjaxControlToolkit .config à root et inséré ce

<?xml version="1.0"?> 
<ajaxControlToolkit> 
    <controlBundles> 
    <controlBundle name="AjaxBundle"> 
     <control name="CalendarExtender" /> 
     <control name="ComboBox" /> 
    </controlBundle> 
    </controlBundles> 
</ajaxControlToolkit> 

Ajouté ScriptManager à masterpage:

<asp:ScriptManager ID="sm" runat="server" EnableCdn="true" > 
      <Scripts> 
       <asp:ScriptReference Path="~/Scripts/AjaxControlToolkit/AjaxBundleBundle" /> 
      </Scripts> 
     </asp:ScriptManager> 

a ajouté à asax mondial de démarrage de l'application:

BundleTable.Bundles.Add(new ScriptBundle("~/Script/js-master".Include("~/Scripts/AjaxControlToolkit/AjaxBundle")); 

Sur masterpage J'ai aussi:

<%: System.Web.Optimization.Scripts.Render("~/Script/js-master") %> 

Je intentionnellement manqué d'extension de curseur (Cela ne devrait donc pas fonctionner), mais cela fonctionne quand même, donc je suppose que tous les scripts Ajax Control Toolkit sont chargés.

config Web, aussi:

<compilation debug="false" targetFramework="4.5.1"> 
+0

Vous n'avez pas besoin d'ajouter 'ScriptBundle' dans' BundleTable' explicitement. Pouvez-vous vérifier quels scripts sont réellement chargés dans la console de développeur du navigateur? Il se peut que vous chargiez également le bundle CDN. –

Répondre

2

En fait, vous pouvez. Cette fonctionnalité est conservée pour une compatibilité descendante.

Vous n'avez plus besoin de le spécifier explicitement. Toolkit analyse le fichier AjaxControlToolkit.config dans la racine de l'application (en particulier, HttpRuntime.AppDomainAppPath) et crée des ensembles de contrôle à partir de celui-ci.

+0

Je n'ai pas encore AjaxControlToolkit.config dans root. Je vais l'ajouter et spécifier les scripts que je veux. Vous souhaitez en savoir plus sur le paramètre HttpRuntime.AppDomainAppPath? Je suppose que c'est configuré dans web config. – CyberHawk

+1

Non, c'est une valeur codée en dur: https://github.com/DevExpress/AjaxControlToolkit/blob/master/AjaxControlToolkit/Bundling/BundleResolver.cs#L144 –

+0

Donc, en dehors de l'ajout de AjaxControlToolkit.config fichier à la racine et ajouter du contenu je ne sais pas besoin de faire autre chose? – CyberHawk

0

En plus des scripts js, le toolkit chargera également quelques fichiers CSS.Pour éviter de se charger ces WebResource.axd avec css et contenu de l'image, vous pouvez utiliser web.config:

<configSections> 
    <section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" requirePermission="false"/> 
</configSections> 

<ajaxControlToolkit renderStyleLinks="false" /> 

Pour voir le contenu des fichiers, dans un projet de test, installez le package NuGet AjaxControlToolkit.StaticResources qui a tout images, css et js. Par exemple, j'utilise CalendarExtender, mais je ne veux pas qu'une requête http supplémentaire obtienne les petites flèches gauche et droite, j'ai donc personnalisé le CSS pour utiliser mon propre sprite générique. Idem pour la flèche vers le bas de Combobox, j'utilise en fait le caractère/style de caractère de bootstrap Bootstrap au lieu d'une image.