Question

Comment définirais-je qu'une image provienne d'un répertoire de thèmes (mon thème change afin que je ne veuille pas faire directement référence)? Je suis certain que cela est possible, mais chaque exemple que je trouve ne semble pas fonctionner. Ils ressemblent généralement à:

asp: image ID = " Image1 " runat = " serveur " ImageUrl = & Quot; ~ / Web / Mode1.jpg & Quot; /

où Web serait un sous-répertoire de mon dossier de thèmes. La suggestion du répertoire du thème serait ajoutée à l'exécution.

Était-ce utile?

La solution

Si vous souhaitez référencer une image dans votre dossier de thème, je vous suggère d'utiliser un identifiant de peau. Dans le fichier de skin de chaque dossier de thème, vous définissez quelque chose comme ceci

<asp:Image runat="server" SkinId="HomeImage" ImageUrl="Images/HomeImage.gif" />

Quand vous allez utiliser l'image dans votre code, vous faites quelque chose comme ça ...

<asp:Image runat="server" SkinId="HomeImage" />

En fonction du thème choisi par votre application, celle-ci récupérera la bonne image dans le bon dossier de thèmes.

MyWebSite
  App_Themes
    Theme1
      Default.skin
      Default.css
      Images
         HomeImage.gif
    Theme2
      Default.skin
      Default.css
      Images
         HomeImage.gif

Voici un bon article expliquant comment utiliser des thèmes, des skins et définir le thème de plusieurs manières différentes.

Autres conseils

Quelqu'un d'autre a-t-il un aperçu de cette question?

Une autre option consiste à agrandir la page de base. J'ai ajouté une fonction qui renverra le chemin d'une image en fonction du thème actuel.

MyBasePage.vb

Private strThemePath As String = ""
Private strThemedImagePath As String = ""

Public Function ThemedImage(ByVal ImageName As String) As String
    Return Me.strThemedImagePath & ImageName
End Function

Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit  
    Me.strThemePath = "App_Themes/" & Me.Theme & "/"
    Me.strThemedImagePath = Me.strThemePath & "Images/"
End Sub

MyPage.aspx

<img src='<%= Me.ThemedImage("Loading_wait.gif") %>'> 

Je ne sais pas si j'ai bien compris votre question, mais si vous avez une image dans un fichier de skin, telle que la suivante, elle viendra par défaut du dossier du thème:

<asp:Image runat="server" ImageUrl="filename.ext" />

Si vous souhaitez qu'il provienne d'un sous-dossier Web du dossier du thème, utilisez un chemin relatif:

<asp:Image runat="server" ImageUrl="Web/filename.ext" />

Votre exemple spécifie un sous-dossier du répertoire racine de l'application:

<asp:image ID="Image1" runat="server" ImageUrl="~/Web/Mode1.jpg"/> 

Voir la page MSDN sur les thèmes et les skins .

Il doit sûrement y avoir un moyen plus facile? Par exemple, si je veux créer un contrôle HyperLink et que je veux spécifier une image pour celui-ci, mais que cette image est dans un thème, comment puis-je le faire? Je souhaite que le thème de l'ensemble de l'application soit contrôlé à partir de web.config (par exemple, <page theme="MyTheme">). Je ne souhaite pas avoir à spécifier un thème pour chaque élément de mon site.

modifier: j'ai en quelque sorte répondu à ma propre question. Je crée dans un fichier de skin, ce contrôle:

<asp:Hyperlink runat="Server" SkinId="HyperlinkOne"
ImageUrl="Images/one.png" Text="One" NavigateUrl="~/PageOne.aspx"/>

Ensuite, dans mon code, je fais simplement ceci:

HyperLink hl = new HyperLink();
hl.SkinID = "HyperlinkOne";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top