net framework asp asp.net themes

asp.net - framework asp net



Imágenes de temas de ASP.NET (4)

No estoy seguro de haber entendido bien tu pregunta, pero si tienes una imagen en un archivo skin, como la siguiente, aparecerá de forma predeterminada en la carpeta de temas:

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

Si desea que proceda de una subcarpeta web de la carpeta de temas, use una ruta relativa:

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

Su ejemplo especifica una subcarpeta del directorio raíz de la aplicación:

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

Consulte la página de MSDN sobre temas y máscaras .

¿Cómo puedo configurar una imagen para que proceda de un directorio de temas (mi tema cambia, así que no quiero hacer una referencia directa) Estoy seguro de que esto es posible, pero cada ejemplo que encuentro no parece funcionar. Por lo general, están en la línea de:

asp: ID de imagen = "Imagen1" runat = "servidor" ImageUrl = "~ / Web / Mode1.jpg" /

donde Web sería un subdirectorio en mi carpeta de temas. Sugerir el directorio de temas se agregaría en tiempo de ejecución.


Si quiere hacer referencia a una Imagen en su carpeta de Temas, sugiero usar un SkinId. Dentro del archivo de máscara de cada Carpeta de temas, definiría algo como esto

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

Cuando vas a usar la imagen en tu código, haces algo como esto ...

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

Dependiendo del tema elegido por su aplicación, recogerá la imagen correcta de la carpeta de temas correcta.

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

Aquí hay un buen artículo que explica cómo usar temas, máscaras y cómo configurar el tema de diferentes maneras.


¿Alguien más tiene una idea de esta pregunta?

Otra opción es extender la página base. Agregué una función que devolverá la ruta de una imagen basada en el tema actual.

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


Debe haber una manera más fácil seguramente? Por ejemplo, si quiero crear un control HyperLink y quiero especificar una imagen para él, pero esa imagen está en un tema, ¿cómo lo hago? Quiero que el tema de toda la aplicación se controle desde web.config (por ejemplo, <page theme="MyTheme"> ), no quiero tener que especificar un tema para cada elemento de mi sitio.

editar: He respondido a mi propia pregunta. Creo en un archivo skin, este control:

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

Luego en mi código simplemente hago esto:

HyperLink hl = new HyperLink(); hl.SkinID = "HyperlinkOne";