2008-10-14 26 views
13

我如何設置圖片來自主題目錄(我的主題發生變化,所以我不想直接引用)我相信這是可能的,但我發現每個示例似乎都沒有工作。他們通常是沿着線:ASP.NET主題圖片

ASP:圖像ID = 「此搜索」 RUNAT = 「服務器」 的ImageUrl = 「〜/網絡/ Mode1.jpg」/

其中網絡將是一個子目錄我主題文件夾。建議主題目錄將在運行時添加。

回答

19

如果你想引用你的主題文件夾中的圖像,那麼我建議使用SkinId。裏面每個主題文件夾的皮膚文件,當你去使用圖像在你的代碼做這樣的事情,你會定義這樣的事情

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

...

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

根據不同的主題你的應用程序選擇它會從正確的主題文件夾中選取正確的圖像。

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

這裏是一個good article解釋如何使用主題,皮膚和主題設置幾種不同的方式。

0

不知道如果我理解你的問題的權利,但如果你在皮膚文件的圖像,如下面,它會從主題文件夾默認:

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

如果你想讓它來自於主題文件夾的子文件夾網頁,使用相對路徑:

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

你的榜樣指定應用程序根目錄下的子文件夾:

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

請參閱the MSDN page on themes and skins

2

還有其他人對此問題有所瞭解嗎?

另一種選擇是擴展基本頁面。我添加了一個函數,它將返回基於當前主題的圖像路徑。

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

必須有一定更簡單的方法?例如,如果我想創建一個HyperLink控件,並且我想爲它指定一個圖像,但該圖像處於主題中,我該如何操作?我想從web.config控制整個應用程序的主題(例如<page theme="MyTheme">),我不想爲我的網站中的每個項目指定一個主題。

編輯:我有種回答我自己的問題。我的皮膚文件創建,這種控制:

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

然後在我的代碼,我只是這樣做:

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