2008-10-14 9 views
13

Wie würde ich ein Bild aus einem Themenverzeichnis (mein Thema ändert, so dass ich nicht direkt verweisen möchte) festlegen Ich bin mir sicher, dass dies möglich ist, aber jedes Beispiel scheint nicht zu finden Arbeit. Sie sind in der Regel entlang der Linien von:ASP.NET Theme Images

asp: Bild ID = "Bild1" runat = "server" ImageUrl = "~/Web/Mode1.jpg"/

wo Web wäre ein Unterverzeichnis sein in meinem Themenordner. Das Vorschlagen des Themenverzeichnisses würde zur Laufzeit hinzugefügt werden.

Antwort

19

Wenn Sie ein Bild in Ihrem Themenordner referenzieren möchten, empfehle ich die Verwendung einer SkinId. Innerhalb der Skin-Datei jedes Thema Ordner würden Sie so etwas wie dieses

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

definieren Wenn Sie das Bild in Ihrem Code zu verwenden, gehen Sie so etwas tun ...

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

Je nach Thema Ihre Anwendung hat ausgewählt, dass sie das richtige Bild aus dem richtigen Ordner "Theme" aufnimmt.

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

Hier ist ein good article erklärt, wie man Themen verwenden, Skin und das Thema verschiedene Weise einzustellen.

0

nicht sicher, ob ich Ihre Frage richtig verstanden, aber wenn Sie ein Bild in einer Skin-Datei haben, wie die folgenden, wird es standardmäßig aus dem Themenordner kommen:

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

Wenn Sie es wünschen aus einem Unterordner Web des Themenordners zu kommen, einen relativen Pfad verwenden:

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

Ihr Beispiel einen Unterordner des Stammverzeichnisses der Anwendung angibt:

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

Siehe the MSDN page on themes and skins.

2

Hat noch jemand Einblick in diese Frage?

Eine weitere Option ist das Erweitern der Basisseite. Ich habe eine Funktion hinzugefügt, die den Pfad eines Bildes basierend auf dem aktuellen Thema zurückgibt.

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

Es muss einen einfacheren Weg, sicher sein? Wenn ich zum Beispiel ein HyperLink-Steuerelement erstellen möchte und ein Bild dafür angeben möchte, aber dieses Bild in einem Thema ist, wie mache ich das? Ich möchte, dass das Thema für die gesamte App über web.config gesteuert wird (z. B. <page theme="MyTheme">). Ich möchte nicht für jedes Element auf meiner Website ein Thema festlegen müssen.

bearbeiten: Ich habe irgendwie meine eigene Frage beantwortet.Ich schaffe in einer Skin-Datei, diese Steuerung:

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

Dann in meinem Code ich dies einfach tun:

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