Auf unserer Masterseite haben wir ein ScriptManager
, das ungefähr so aussieht
Ich registriere zusätzliche Skripte in verschachtelten Steuerelementen auf Seiten, indem ich Folgendes tue:
%Vor%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?
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:
Eine kleine Anmerkung - wie im Codebeispiel zu sehen ist, würde ich handle case empfehlen, wenn auf der Seite kein ScriptManager
vorhanden ist.
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.
Tags und Links .net c# asp.net master-pages