Pergunta

Como eu poderia definir uma imagem de vir de um diretório do tema (meu tema mudanças para que eu não quero referência diretamente) Estou certo de que isso é possível, mas todos os exemplos que eu encontrar não parece trabalho. Eles são geralmente ao longo das linhas de:

asp: imagem ID = "Image1" runat = "server" ImageUrl = "~ / Web / Mode1.jpg" /

onde Web seria um sub-diretório na minha pasta de temas. Sugerindo que o diretório do tema seria adicionado em tempo de execução.

Foi útil?

Solução

Se você está querendo fazer referência a uma imagem em sua pasta tema, então eu sugerir usando um SkinID. Dentro do arquivo da pele de cada tema pasta você definiria algo como isto

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

Quando você vai para usar a imagem em seu código fazer algo assim ...

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

Dependendo do tema sua aplicação tenha pego ele vai pegar a imagem correta da pasta do tema correto.

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

Aqui está uma href="http://www.odetocode.com/articles/423.aspx" rel="noreferrer"> artigo de boa explicando como usar temas, peles, e para definir o tema de várias maneiras diferentes.

Outras dicas

Alguém tem uma visão sobre esta questão?

Outra opção é estender a página de base. Eu adicionei uma função que irá retornar o caminho de uma imagem baseada no tema atual.

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

Deve haver uma maneira mais fácil não é? Por exemplo, se eu quiser criar um controle HyperLink, e eu quero especificar uma imagem para ele, mas que a imagem está em um tema, como eu faço isso? Eu quero o tema para todo o aplicativo para ser controlado a partir web.config (por exemplo <page theme="MyTheme">), eu não quero ter que especificar um tema para cada item no meu site.

edit: eu tenho tipo de respondi minha própria pergunta. I criar em um arquivo de pele, este controle:

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

Em seguida, no meu código eu simplesmente fazer isso:

HyperLink hl = new HyperLink();
hl.SkinID = "HyperlinkOne";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top