2008-10-14 53 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";