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)

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top