Frage

Bietet die AJAX Extender Control Base ein Abhängigkeitsmanagement? Ich erstelle eine Reihe von Steuerelementen, bei denen einige Basiskripte verwendet werden, die von den Verhaltensweisen und von hier aus verwendet werden Erstellen einer Extender -Kontrolle Es sieht irgendwie aus, dass ich mein Basiskript in jeden einzelnen Kontrollcode aufnehmen muss. So serviert auch die Extender -Basis dasselbe Skript [A zwischengespeichert] für jedes Steuerelement oder das gleiche Skript wird für jede Steuerung zugestellt.

Zum Beispiel entwickle ich Steuerelemente, die von JQuery abhängen. Da ich Extender -Steuerelemente entwickle, muss ich diese Methode von der Schnittstelle wie unten implementieren, beachten Sie das JQuery -Skript!

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    ScriptReference reference = new ScriptReference();
    reference.Path = ResolveClientUrl("jQuery.js");
    reference.Path = ResolveClientUrl("FocusBehavior.js");
    return new ScriptReference[] { reference };
}

Jetzt werde ich das gleiche JQuery -Skript in einer anderen Kontrolle haben. Bedeutet dies also, dass sie zweimal bedient werden, wenn beide Kontrolle auf derselben Seite sind? Auch eine andere Frage,

Wie können Sie die Produktionsskripte anstelle der Debug -Skripte ausgeben. Außerdem Registrieren Sie das Skript mit SkriptManager für mich, da ich MasterPage verwende, für die kein Skript -Manager erforderlich ist.

Einige Spezifikationen:

Entwickelt in VS2005

.NET 2.0, ASP.NET 2.0

Skriptabhängigkeit von Sizzle, Emile.js, Wirbelsäule.js Dies sind Basiskripte, die für alle Steuerelemente erforderlich sind

War es hilfreich?

Lösung

Ich glaube ScriptReference Objekte in seinem Rendering -Prozess, da ASP.NET -Steuerelemente in mehreren Instanzen auf Ihrer Seite vorhanden sind.

In einer ASP.NET -Seite können Sie beispielsweise tun:

<act:Calendar runat="server" ID="calendar1"/>
<act:Calendar runat="server" ID="calendar2"/>

Beide Steuerelemente stützen sich auf die gleichen Skripte, aber das Framework lädt sie nicht zweimal.

In Ihrer Situation möchten Sie wahrscheinlich so etwas tun wie:

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    List<ScriptReference> references = new List<ScriptReference>();

    #if DEBUG
    // Load Debug Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Debug_JS.js"));     
    #else
    // Load Minified Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Release_JS.js"));
    #endif

    return references;
}

Auf diese Weise können Sie entweder die Debug- oder Release -Versionen (Minified) Ihrer JavaScript -Dateien bedienen, je nachdem, ob Sie entweder in Debug- oder Release -Modi sind.

Ich bin mir nicht sicher, ob Ihr Kommentar zu Ihrer Meisterseite, die keine benötigt ScriptManager. Ich werde davon ausgehen, dass Sie einen Mechanismus haben, der sich mit der Umsetzung der Verantwortlichkeiten der Verantwortung befasst ScriptManager wie das anzurufen GetScriptReferences() Methode auf Ihren Steuerelementen und zur Behandlung der Rendering dieser Skript -Tags.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top