2009-06-12 5 views
0

Je suis en train de mettre en œuvre des thèmes pour permettre à un site Web existant d'être renommé (logos, couleurs, images, etc.) en fonction de l'URL de demande. Je comprends comment faire cela et j'ai bien travaillé les skins, sauf quelques exceptions liées aux URL des images.Thème Image URL Rebasing asp.net

Spécifiquement, j'ai une propriété de contrôle qu'il n'est pas possible d'habiller. Avant de mettre en œuvre les thèmes, il ressemblait à ceci:

<DisplayImageChecked Url="~/Images/BobIcon-Green.png" /> 

Évidemment cela ne fonctionnera pas avec les thèmes. Donc, après beaucoup d'essais et d'erreurs et de lecture, j'essaie de l'implémenter comme ceci:

<DisplayImageChecked Url="~/AppThemes/<%= Page.Theme %>/Images/BobIcon-Green.png" /> 

Cependant, cela ne fonctionne pas. Le html généré ressemble à:

<img src="AppThemes/%3C%25=%20Page.Theme%20%25%3E/Images/BobIcon-Green.png"/> 

Tout pointeur dans la bonne direction serait apprécié.

David

+0

Le est-il contenu dans un contrôle lié aux données tel que Repeater, ListView, etc? – Kane

+0

Oui, il s'agit d'un contrôle lié aux données. C'est une propriété d'un GridViewDataCheckColumn sur un ASPxGridView de Developer Express. – daveywc

Répondre

0

Y at-il une raison que vous ne pouvez pas jeter simplement les images dans le même dossier que le thème? Si vous mettez une image par exemple: "image.gif" dans le dossier des thèmes, vous pouvez simplement vous y référer directement dans votre skin.

ImageUrl="image.gif" 

Ceci résoudra très bien lorsque vous appliquez ce skin sur un contrôle de votre page. Aussi beaucoup plus facile que d'essayer de faire la chose URL dynamique.

+0

Malheureusement, cela n'aide pas car j'ai aussi des pages maîtres. – daveywc

2

Utilisez la syntaxe de liaison dans un contrôle lié aux données (voir la simple vs guillemets doubles):

<DisplayImageChecked Url='<%# "~/AppThemes/" + Page.Theme + "/Images/BobIcon-Green.png" %>' /> 
+0

Ceci est la meilleure approche lors de l'utilisation inisde un ASPxGridView –

0

Vous pouvez également utiliser "Images/BobIcon-green.png" comme URL. ASP prendra soin de résoudre l'Url dans le répertoire de votre thème.

+0

Que faire si l'OP a des images dans le dossier de la maison, où il fait référence à? – Lenin

0

est ici la bonne façon d'aller sur votre tâche:

Décorez votre propriété avec l'attribut UrlProperty, ceci indiquera ASP.NET pour traduire automatiquement votre URL partielle dans l'URL correcte. L'utilisation de "~/AppThemes /" + Page.Theme + "/Images/BobIcon-Green.png" fera l'affaire, mais ce n'est PAS la méthode préférée car vous devez faire tout le travail vous-même et c'est toujours bon pratique pour laisser tout le travail à ASP