Domanda

Come impostare un'immagine in modo che provenga da una directory di temi (il mio tema cambia, quindi non voglio fare riferimento direttamente) Sono sicuro che ciò sia possibile, ma ogni esempio che trovo non sembra funzionare. Di solito sono sulla falsariga di:

asp: ID immagine = " Immagine1 " & Runat = quot; quot del server &; ImageUrl = quot &; ~ / Web / Mode1.jpg quot &; /

dove Web sarebbe una sottodirectory nella mia cartella dei temi. Suggerendo che la directory dei temi verrebbe aggiunta in fase di esecuzione.

È stato utile?

Soluzione

Se vuoi fare riferimento a un'immagine nella cartella del tema, ti suggerisco di usare SkinId. All'interno del file skin di ogni cartella del tema, definiresti qualcosa del genere

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

Quando usi l'immagine nel tuo codice, fai qualcosa del genere ...

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

A seconda del tema scelto dall'applicazione, l'immagine verrà corretta dalla cartella Temi corretta.

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

Ecco un un buon articolo che spiega come utilizzare temi, skin e impostare il tema in diversi modi.

Altri suggerimenti

Qualcun altro ha un'idea di questa domanda?

Un'altra opzione è quella di estendere la pagina di base. Ho aggiunto una funzione che restituirà il percorso di un'immagine in base al tema corrente.

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") %>'> 

Non sono sicuro di aver capito bene la tua domanda, ma se hai un'immagine in un file skin, come il seguente, verrà automaticamente dalla cartella del tema:

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

Se vuoi che provenga da una sottocartella Web della cartella del tema, usa un percorso relativo:

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

Il tuo esempio specifica una sottocartella della directory radice dell'applicazione:

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

Vedi la pagina MSDN su temi e skin .

Deve esserci sicuramente un modo più semplice? Ad esempio, se voglio creare un controllo HyperLink e desidero specificare un'immagine per esso, ma quell'immagine è in un tema, come posso fare? Voglio che il tema dell'intera app sia controllato da web.config (ad es. <page theme="MyTheme">), non voglio specificare un tema per ogni elemento del mio sito.

modifica: ho risposto alla mia domanda. Creo in un file skin, questo controllo:

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

Quindi nel mio codice faccio semplicemente questo:

HyperLink hl = new HyperLink();
hl.SkinID = "HyperlinkOne";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top