ScriptControl casos múltiples variables que comparten
-
09-10-2019 - |
Pregunta
Tengo un ScriptControl
que utiliza una imagen como un recurso incrustado y GetWebResourceUrl
para generar la URL WebResource.axd
. Actualmente estoy usando GetScriptDescriptors()
para enviar el URL para el objeto JavaScript.
El ScriptControl
puede estar en un Repeater
, lo que puede tener más de 20 casos. Todos ellos utilizan las mismas imágenes (no personalizable a través de la propiedad), por lo que me gustaría establecer la dirección URL una vez en una variable y compartirlo. Sé que podría registrar un bloque de script con una variable global, pero me gustaría evitar que si es posible. ¿Hay una manera de establecer una variable dentro del ámbito del tipo de control? (Global -> tipo de control / -> instancia de control)
Solución
Esto parece funcionar bien:
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);
A continuación, en mi objeto que acaba de hacer this.imgDisabled
o this.imgEnabled
para obtener las direcciones URL.
Editar Otra opción es que en AssemblyInfo.cs
establecer la referencia JavaScript para WebResource(..., PerformSubstitution = true)
entonces su Js archivo puede tener <%= WebResource("MyNamespace.enabled.png") %>
cualquier lugar que desee. Esto puede ser en el que realmente se utilicen o añadir al prototipo objeto.