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)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top