2009-02-25 7 views
2

ich eine Master-Seite, die die jQuery-Bibliothek über eine registerclientscriptinclude ergänzt:ASP.NET Masterseiten Reihenfolge der Zugabe Skripte

Page.ClientScript.RegisterClientScriptInclude(this.GetType(), 
    "JQuery", 
    Page.ResolveUrl("~/Scripts/jquery-1.2.6.min.js")); 

In einer Seite, die diese Master-Seite, die ich ein Skript enthalten sein soll verwendet, das hängt davon ab, jquery:

Page.ClientScript.RegisterClientScriptInclude(this.GetType(), 
    "jqplugin1", 
    Page.ResolveUrl("~/Scripts/jquery.plugin1.compressed.js")); 

dies ein Problem verursacht, weil die Client-Skripte Seite zuerst geschrieben und dann dem Master-Seiten-Client-Skripte (was das Plugin zu beklagen, dass „jquery“ ist nicht definiert).

Gibt es sowieso, um die Reihenfolge der Client-Skript enthält zu steuern? Alternativ jede Empfehlung, wie man das am besten kontrollieren kann (zeitweise ist die Masterseite nur alles inklusive ... aber das wird nicht langfristig funktionieren).

+0

In welchen Teil des Lebenszyklus fügen Sie sie hinzu? PageInit? Page_Load? – mbillard

Antwort

1

Da die Masterseite wie ein Steuerelement in eine Seite eingebettet ist, können Sie diese Skripte am Ende des Seitenzyklus hinzufügen, das Steuerelement würde zuerst und dann Seite auslösen, so dass Ihre Seite in Ordnung wäre.

+0

Page_PreRender() ist der Spot. Vielen Dank! – user53794

1

Sie könnten die jQuery-Bibliothek auf der Seite wieder einfügen, wenn sie bereits vorhanden ist, überschreibt sie sie einfach, andernfalls wird sie hinzugefügt.

+0

Autsch ... das ist etwas hässlich :) – user53794

+0

Ich glaube nicht. Die MasterPage benötigt jQuery, also enthält sie es. Ihre Seite braucht es auch, damit sie es enthält. Was ist, wenn Ihre Seite eine andere Masterseite verwendet, die jQuery nicht enthält? Es würde nicht funktionieren. – mbillard

+0

Page_PreRender() ist der Ort. Ich mag das besser, weil ich nicht weiß, ob der Browser eine doppelte Aufnahme erkennen wird oder ob die js-Engine die Initialisierung der Jquery erneut verarbeiten wird (was keinen Schaden anrichten sollte ... es ist nur eine Ineffizienz, die ich lieber vermeiden würde). – user53794