So ändern Sie die Reihenfolge registrierter Skripts in einem ScriptManager

8

Hintergrund

Auf unserer Masterseite haben wir ein ScriptManager , das ungefähr so ​​aussieht

%Vor%

Ich registriere zusätzliche Skripte in verschachtelten Steuerelementen auf Seiten, indem ich Folgendes tue:

%Vor%

Erwartet

  1. master.js
  2. jquery-min.js
  3. jquery-ui.js *

Ist

  1. jquery-ui.js *
  2. master.js
  3. jquery-min.js

Frage

Gibt es eine Möglichkeit, die Reihenfolge zu ändern, in der die registrierten Skripte geladen werden?

- oder -

Ist es möglich, zumindest sicherzustellen, dass die Skripte, die im aktuellen ScriptManager -Block registriert sind, vor registrierten Code-Hinten-Skripten registriert sind?

    
Richard 20.06.2012, 13:57
quelle

2 Antworten

5

Nachdem wir ein wenig in den ScriptManager Quellcode gegraben haben, können wir zwei nützliche Beobachtungen machen:

  • Zum Manager hinzugefügte Skripte werden nacheinander auf der Seite registriert, damit sie in der Sammlung ScriptManager.Scripts erscheinen (wenn Sie neugierig sind - über die Methode ClientScript.RegisterClientScriptBlock , nicht in der Render -Methode oder -Ste so.)

  • Skripts, die im Markup deklariert sind, werden zur Sammlung ScriptManager.Scripts bei ScriptManager Objekt-Erstellung hinzugefügt.

Daher ein Weg zu

  

Stellen Sie sicher, dass die Skripte, die im aktuellen ScriptManager-Block registriert sind, vor Code-Behind-registrierten Skripten registriert sind

besteht darin, Ihre Skripts in Steuerelementen direkt in ScriptManager.Scripts collection hinzuzufügen, anstatt die statischen Hilfsmethoden von ScriptManager class zu verwenden. Das Codebeispiel der Steuerung folgt:

%Vor%

Eine kleine Anmerkung - wie im Codebeispiel zu sehen ist, würde ich handle case empfehlen, wenn auf der Seite kein ScriptManager vorhanden ist.

    
Andrei 21.06.2012, 09:22
quelle
1

Verwenden Sie auf Ihren Seiten <asp:ScriptManagerProxy> , um Ihre Skripts zu registrieren, und sie werden in der erwarteten Reihenfolge angezeigt. Skripts, die in Code-Behind registriert sind, werden dem Skriptmanager hinzugefügt, bevor der ASPX überhaupt analysiert wird.

    
Josh M. 09.03.2015 14:36
quelle

Tags und Links