Question

J'ai un ScriptControl qui utilise une image comme une ressource intégrée et GetWebResourceUrl pour générer l'URL de WebResource.axd. J'utilise actuellement GetScriptDescriptors() d'envoyer l'URL à l'objet JavaScript.

Le ScriptControl peut être dans un Repeater, de sorte que vous pouvez avoir plus de 20 cas. Ils utilisent tous les mêmes images (non personnalisables par la propriété), donc je voudrais mettre l'URL une fois dans une variable et de le partager. Je sais que je pourrais enregistrer un bloc de script avec une variable globale, mais je voudrais éviter que, si possible. Est-il possible de définir une variable dans le cadre du type de contrôle? (Global -> -> instance de contrôle)

Était-ce utile?

La solution

Cela semble bien au travail:

        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);

Alors dans mon objet je fais juste this.imgDisabled ou this.imgEnabled pour obtenir les URL.

Modifier Une autre option est AssemblyInfo.cs vous définissez la référence à JavaScript WebResource(..., PerformSubstitution = true) alors votre fichier .js peut avoir <%= WebResource("MyNamespace.enabled.png") %> partout où vous le souhaitez. Cela peut être là où vous utilisez réellement ou en y ajoutant le prototype d'objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top