Più istanze ScriptControl condivisione variabile
-
09-10-2019 - |
Domanda
Ho un ScriptControl
che utilizza un'immagine come risorsa incorporata e GetWebResourceUrl
per generare l'URL WebResource.axd
. Attualmente sto usando GetScriptDescriptors()
per inviare l'URL per l'oggetto JavaScript.
Il ScriptControl
può essere in un Repeater
, così si può avere più di 20 casi. Tutti usano le stesse immagini (non personalizzabili attraverso la proprietà), quindi vorrei impostare l'URL una volta in una variabile e condividerlo. So che potrei registrare un blocco di script con una variabile globale, ma vorrei evitare che, se possibile. C'è un modo per impostare una variabile nell'ambito di applicazione del tipo di controllo? (Globale -> tipo di controllo -> istanza di controllo)
Soluzione
Questo sembra funzionare bene:
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);
Poi nel mio oggetto ho solo fare this.imgDisabled
o this.imgEnabled
per ottenere gli URL.
Modifica Un'altra opzione è in AssemblyInfo.cs
si impostare il riferimento JavaScript per WebResource(..., PerformSubstitution = true)
allora il vostro .js file può avere <%= WebResource("MyNamespace.enabled.png") %>
ovunque si desidera. Questo può essere dove effettivamente utilizzare o l'aggiunta al prototipo dell'oggetto.