Mehrere Instanzen Script Variable teilen
-
09-10-2019 - |
Frage
habe ich ein ScriptControl
, die ein Bild als eingebettete Ressource und GetWebResourceUrl
verwendet die WebResource.axd
URL zu generieren. Ich bin derzeit GetScriptDescriptors()
mit der URL an das JavaScript-Objekt zu senden.
Die ScriptControl
kann in einem Repeater
, so dass Sie mehr als 20 Instanzen haben können. Sie alle verwenden die gleichen Bilder (nicht anpassbar durch Eigentum), so dass ich einmal die URL festlegen möchten in einer Variablen und teilen Sie es. Ich weiß, ich könnte einen Skriptblock mit einer globalen Variablen registrieren, möchte aber, dass wenn möglich vermeiden. Gibt es eine Möglichkeit, eine Variable im Rahmen des Steuertyp eingestellt? (Global -> Steuerungsart -> Kontrollinstanz)
Lösung
Das scheint gut zu funktionieren:
string imagesScript = String.Format(
"MyNamespace.MyClass.prototype.imgDisabled = '{0}';" +
"MyNamespace.MyClass.prototype.imgEnabled = '{1}';",
Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.disabled.png"),
Page.ClientScript.GetWebResourceUrl(typeof(MyClass), "MyNamespace.enabled.png")
);
Page.ClientScript.RegisterStartupScript(typeof(MyClass), "Images", imagesScript, true);
Da ist in meinem Objekt, das ich nur this.imgDisabled
oder this.imgEnabled
tun, um die URLs zu erhalten.
Edit: Eine weitere Möglichkeit ist in AssemblyInfo.cs
Sie die JavaScript-Verweis auf WebResource(..., PerformSubstitution = true)
stellen Sie dann Ihre js-Datei <%= WebResource("MyNamespace.enabled.png") %>
überall haben können Sie es wünschen. Dies kann sein, wenn Sie es tatsächlich verwenden oder das Hinzufügen von dem Objekt Prototyp.