Condividi tramite


Assegnazione dinamica dei riferimenti a uno script

Aggiornamento: novembre 2007

Nella maggior parte degli scenari il modo più semplice per aggiungere un file script a una pagina ASP.NET è nel markup, come indicato nell'esempio seguente:

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

Tuttavia, è anche possibile aggiungere i riferimenti a uno script dinamicamente. Gli sviluppatori della pagina possono adottare tale procedura per avere un controllo maggiore sulla modalità di aggiunta di uno script. Ad esempio, è possibile aggiungere gli script dinamicamente per limitare le risorse di memoria evitando di caricare una libreria di script di grandi dimensioni a meno che non sia necessario. Oppure è possibile caricare versioni di script differenti per tipi di utenti diversi. Gli sviluppatori del controllo aggiungono gli script dinamicamente quando creano controlli o controlli Extender di script in modo da rendere le risorse di script automaticamente disponibili nella pagina che ospita il controllo.

In questo argomento viene illustrato un semplice scenario per lo sviluppatore della pagina. Per l'aggiunta di riferimenti a script nei controlli personalizzati, vedere Creazione di un controllo Extender per associare un comportamento client a un controllo server Web.

I riferimenti a script possono specificare file script o script incorporati come risorse negli assembly. Gli script possono essere disponibili in versioni finali o di debug. Nella procedura descritta di seguito viene illustrato come assegnare un riferimento a uno script a una pagina in ognuna di queste situazioni.

Nota:

Tutti i file script da registrare con il controllo ScriptManager devono chiamare il metodo notifyScriptLoaded per notificare all'applicazione il completamento del caricamento dello script. Nella maggior parte dei casi gli script basati su assembly non devono chiamare questo metodo. Per ulteriori informazioni, vedere Metodo Sys.Application.notifyScriptLoaded.

Per aggiungere dinamicamente un riferimento a uno script in una pagina

  1. Se non si conosce l'ID dell'elemento <asp:ScriptManager> nella pagina, chiamare il metodo ScriptManagerGetCurrent() del controllo ScriptManager per ottenere l'istanza corrente del controllo. Utilizzare null nel caso in cui non sia presente alcun controllo ScriptManager nella pagina. Se si è certi della presenza dell'elemento <asp:ScriptManager> nella pagina e si conosce il valore ID, è possibile saltare questo passaggio.

    Nell'esempio seguente viene illustrato come verificare la presenza di un controllo ScriptManager in una pagina e ottenere l'istanza corrente o creare un'istanza nuova.

    ' 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. Creare un oggetto ScriptReference.

    Dim SRef As ScriptReference
    SRef = New ScriptReference()
    
    ScriptReference SRef = new ScriptReference();
    
  3. Per gli script basati su file, se si è certi che la proprietà ScriptPath del controllo ScriptManager è impostata sul percorso corretto per il file script, impostare la proprietà Name dell'istanza ScriptReference sul nome del file script. In caso contrario, impostare la proprietà Path dell'oggetto ScriptReference sull'URL assoluto, relativo o relativo all'applicazione del file script da aggiungere.

    ' 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. Se lo script è parte di un assembly, impostare le proprietà Name e Assembly dell'istanza ScriptReference.

    SRef.Name = "Script.js"
    SRef.Assembly = "ScriptAssembly"
    
    SRef.Name = "Script.js";
    SRef.Assembly = "ScriptAssembly";
    
  5. Specificare se eseguire una versione finale o di debug dello script. Per impostare questa modalità per tutti gli script della pagina, impostare la proprietà ScriptMode del controllo ScriptManager. Per impostare la modalità di debug per un singolo script, impostare la proprietà ScriptMode dell'oggetto ScriptReference.

    Nell'esempio seguente vengono illustrate entrambe le opzioni.

    ' 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.
    
    Nota:

    Se la proprietà Path dell'oggetto ScriptReference non è impostata, la proprietà ScriptMode del controllo ScriptManager viene impostata su Release per impostazione predefinita. Se la proprietà Path dell'oggetto ScriptReference è impostata, il controllo ScriptManager cercherà gli script della versione di debug e finale a meno che la proprietà ScriptMode non sia impostata su una modalità specifica.

  6. Aggiungere l'oggetto ScriptReference all'insieme Scripts del controllo ScriptManager.

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

Vedere anche

Concetti

Creazione di un controllo Extender per associare un comportamento client a un controllo server Web

Aggiunta di funzionalità client a un controllo server Web

Riferimenti

ScriptReference

ScriptManager

ScriptMode