Assignation dynamique de références de script

Mise à jour : novembre 2007

Dans la plupart des scénarios, la façon la plus simple d'ajouter un fichier de script à une page ASP.NET consiste à effectuer cette opération dans le balisage, comme dans l'exemple suivant :

<asp:ScriptManager ID="SMgr" >
  <Scripts>
    <asp:ScriptReference Path="./Script.js" />
  </Scripts>
</asp:ScriptManager> 

Vous pouvez également ajouter des références de script de façon dynamique. Ceci offre aux développeurs de pages un moyen de contrôle plus rigoureux de l'ajout d'un script. Par exemple, ils peuvent ajouter des scripts de façon dynamique pour économiser les ressources mémoire, en ne téléchargeant pas de volumineuses bibliothèques de scripts, sauf si cela est expressément requis. Ils peuvent également télécharger d'autres versions de scripts pour les différents types d'utilisateurs. Les développeurs de contrôles ajoutent des scripts en mode dynamique lorsqu'ils créent des contrôles de script ou des contrôles d'extendeur, pour mettre automatiquement les ressources de script à la disposition de la page qui héberge le contrôle.

Cette rubrique présente un scénario simple mettant en scène un développeur de pages. Pour ajouter des références de script aux contrôles personnalisés, consultez Création d'un contrôle d'extendeur pour associer un comportement client à un contrôle serveur Web.

Les références de script peuvent spécifier des fichiers de script ou des scripts intégrés comme ressources dans les assemblys. Les scripts existent en version Debug et en version commerciale. La procédure suivante indique comment assigner une référence de script à une page dans chacune de ces situations.

Remarque :

Tous les fichiers de script à enregistrer avec le contrôle ScriptManager doivent appeler la méthode notifyScriptLoaded pour signaler à l'application que le chargement du script est terminé. En règle générale, les scripts basés sur un assembly ne doivent pas appeler cette méthode. Pour plus d'informations, consultez Sys.Application.notifyScriptLoaded, méthode.

Pour ajouter une référence de script à une page de façon dynamique

  1. Si vous ne connaissez pas l'ID de l'élément <asp:ScriptManager> de la page, appelez la méthode ScriptManagerGetCurrent() du contrôle ScriptManager pour accéder à l'instance actuelle du contrôle. Lancez un test de null si aucun contrôle n'est présent ScriptManager sur la page. Si vous savez qu'il existe un élément <asp:ScriptManager> sur la page et que vous connaissez sa valeur ID, vous pouvez ignorer cette étape.

    L'exemple suivant indique comment lancer un test pour vérifier l'existence d'un contrôle ScriptManager sur une page, puis accéder à l'instance actuelle ou en créer une nouvelle.

    ' If there is a ScriptManager on the page, use it.
    ' If not, throw an exception.
    Dim SMgr As ScriptManager
    If ScriptManager.GetCurrent(Page) Is Nothing Then
        Throw New Exception("ScriptManager not found.")
    Else : SMgr = ScriptManager.GetCurrent(Page)
    End If
    
    // If there is a ScriptManager on the page, use it.
    // If not, throw an exception.
    ScriptManager Smgr = ScriptManager.GetCurrent(Page);
    if (Smgr == null) throw new Exception("ScriptManager not found.");
    
  2. Créez un objet ScriptReference.

    Dim SRef As ScriptReference
    SRef = New ScriptReference()
    
    ScriptReference SRef = new ScriptReference();
    
  3. Pour les scripts basés sur des fichiers, si vous savez que la propriété ScriptPath du contrôle ScriptManager a pour valeur l'emplacement correct du fichier de script, définissez la propriété Name de l'instance ScriptReference sur le nom du fichier de script. Sinon, affectez l'URL absolue, relative ou relative à l'application du fichier de script à ajouter à la propriété Path de l'objet ScriptReference.

    ' If you know that Smgr.ScriptPath is correct...
    SRef.Name = "Script.js"
    
    ' Or, to specify an app-relative path...
    SRef.Path = "~/Scripts/Script.js"
    
    // If you know that Smgr.ScriptPath is correct...
    SRef.Name = "Script.js";
    
    // Or, to specify an app-relative path...
    SRef.Path = "~/Scripts/Script.js";
    
  4. Si le script fait partie d'un assembly, définissez les propriétés Name et Assembly de l'instance ScriptReference.

    SRef.Name = "Script.js"
    SRef.Assembly = "ScriptAssembly"
    
    SRef.Name = "Script.js";
    SRef.Assembly = "ScriptAssembly";
    
  5. Spécifiez s'il faut exécuter les versions Debug ou Release du script. Pour définir ce mode pour tous les scripts de la page, définissez la propriété ScriptMode du contrôle ScriptManager. Pour définir le mode débogage d'un script, définissez la propriété ScriptMode de l'objet ScriptReference.

    L'exemple suivant présente les deux options.

    ' To set ScriptMode for all scripts on the page...
    SMgr.ScriptMode = ScriptMode.Release
    
    'Or, set ScriptMode for just for the one script...
    SRef.ScriptMode = ScriptMode.Debug
    
    'If they conflict, the setting on the ScriptReference wins.
    
    // To set ScriptMode for all scripts on the page...
    Smgr.ScriptMode = ScriptMode.Release;
    
    //Or, to set the ScriptMode just for the one script...
    SRef.ScriptMode = ScriptMode.Debug;
    
    //If they conflict, the setting on the ScriptReference wins.
    
    Remarque :

    Si la propriété Path de l'objet ScriptReference n'est pas définie, la propriété ScriptMode du contrôle ScriptManager prend par défaut la valeur Release. Si la propriété Path de l'objet ScriptReference est définie, le contrôle ScriptManager recherche les versions Debug et Release, à moins que sa propriété ScriptMode ne soit paramétrée sur un mode spécifique.

  6. Ajoutez l'objet ScriptReference à la collection Scripts du contrôle ScriptManager.

    SMgr.Scripts.Add(SRef)
    
    Smgr.Scripts.Add(SRef);
    

Voir aussi

Concepts

Création d'un contrôle d'extendeur pour associer un comportement client à un contrôle serveur Web

Ajout de fonctionnalités clientes à un contrôle serveur Web

Référence

ScriptReference

ScriptManager

ScriptMode