Dynamisches Zuweisen von Skriptverweisen

Aktualisiert: November 2007

In den meisten Szenarien kann eine Skriptdatei einer ASP.NET-Seite am einfachsten in Markup hinzugefügt werden, wie im Folgenden dargestellt:

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

Das dynamische Hinzufügen von Skriptverweisen ist jedoch ebenfalls möglich. So können Seitenentwickler besser kontrollieren, wie ein Skript hinzugefügt wird. Beispielsweise können Skripts dynamisch hinzugefügt werden, um Speicherplatz zu sparen, indem eine große Skriptbibliothek nur bei Bedarf geladen wird. Außerdem können verschiedene Skriptversionen für verschiedene Benutzertypen geladen werden. Entwickler von Steuerelementen fügen Skripts beim Erstellen von Skript- oder Extendersteuerelementen dynamisch hinzu. So werden die Skriptressourcen automatisch der Seite zur Verfügung gestellt, die das Steuerelement hostet.

In diesem Thema wird ein einfaches Seitenentwicklerszenario erläutert. Weitere Informationen zum Hinzufügen von Skriptverweisen in benutzerdefinierten Steuerelementen finden Sie unter Erstellen eines Extendersteuerelements zum Zuordnen eines Clientverhaltens zu einem Webserversteuerelement.

In Skriptverweisen können Skriptdateien oder Skripts angegeben werden, die als Ressourcen in Assemblys eingebettet sind. Skripts können in Debug- oder Verkaufsversionen vorhanden sein. Im folgenden Verfahren wird das Zuweisen eines Skriptverweises zu einer Seite für jede dieser Situationen veranschaulicht.

Hinweis:

Alle für das ScriptManager-Steuerelement zu registrierenden Skriptdateien müssen die notifyScriptLoaded-Methode aufrufen, um die Anwendung zu benachrichtigen, dass der Ladevorgang des Skripts beendet ist. In den meisten Fällen sollten assemblybasierte Skripts diese Methode nicht aufrufen. Weitere Informationen finden Sie unter Sys.Application.notifyScriptLoaded-Methode.

So fügen Sie einer Seite einen Skriptverweis dynamisch hinzu

  1. Wenn die ID des <asp:ScriptManager>-Elements auf der Seite nicht bekannt ist, muss die ScriptManagerGetCurrent()-Methode des ScriptManager-Steuerelements zum Abrufen der aktuellen Instanz des Steuerelements aufgerufen werden. Prüfen Sie auf null für den Fall, dass auf der Seite kein ScriptManager-Steuerelement vorhanden ist. Wenn das Vorhandensein eines <asp:ScriptManager>-Elements auf der Seite und dessen ID-Wert bekannt sind, können Sie diesen Schritt überspringen.

    Im folgenden Beispiel wird dargestellt, wie überprüft werden kann, ob ein ScriptManager-Steuerelement auf der Seite vorhanden ist. Anschließend wird erläutert, wie die aktuelle Instanz des Steuerelements abgerufen oder eine neue Instanz erstellt wird.

    ' 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. Erstellen eines ScriptReference-Objekts

    Dim SRef As ScriptReference
    SRef = New ScriptReference()
    
    ScriptReference SRef = new ScriptReference();
    
  3. Wenn für dateibasierte Skripts bekannt ist, dass die ScriptPath-Eigenschaft des ScriptManager-Steuerelements auf den korrekten Speicherort für die Skriptdatei festgelegt ist, kann die Name-Eigenschaft der ScriptReference-Instanz auf den Skriptdateinamen festgelegt werden. Andernfalls muss die Path-Eigenschaft des ScriptReference-Objekts auf die absolute, relative oder anwendungsrelative URL der hinzuzufügenden Skriptdatei festgelegt werden.

    ' 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. Wenn das Skript zu einer Assembly gehört, müssen die Eigenschaften Name und Assembly der ScriptReference-Instanz festgelegt werden.

    SRef.Name = "Script.js"
    SRef.Assembly = "ScriptAssembly"
    
    SRef.Name = "Script.js";
    SRef.Assembly = "ScriptAssembly";
    
  5. Geben Sie an, ob die Debug- oder Releaseversion des Skripts ausgeführt werden soll. Zum Festlegen des Modus für alle Skripts auf der Seite muss die ScriptMode-Eigenschaft des ScriptManager-Steuerelements festgelegt werden. Um den Debugmodus für ein einzelnes Skript festzulegen, muss die ScriptMode-Eigenschaft des ScriptReference-Objekts festgelegt werden.

    Im folgenden Beispiel werden beide Optionen veranschaulicht.

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

    Wenn die Path-Eigenschaft des ScriptReference-Objekts nicht festgelegt ist, wird die ScriptMode-Eigenschaft des ScriptManager-Steuerelements standardmäßig auf Release festgelegt. Wenn die Path-Eigenschaft des ScriptReference-Objekts festgelegt ist, sucht das ScriptManager-Steuerelement nach Debug- und Releaseskripts, wenn dessen ScriptMode-Eigenschaft auf keinen bestimmten Modus festgelegt ist.

  6. Fügen Sie das ScriptReference-Objekt der Scripts-Auflistung von ScriptManager-Steuerelementen hinzu.

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

Siehe auch

Konzepte

Erstellen eines Extendersteuerelements zum Zuordnen eines Clientverhaltens zu einem Webserversteuerelement

Hinzufügen von Clientfunktionen zu einem Webserversteuerelement

Referenz

ScriptReference

ScriptManager

ScriptMode