如何将图像设置为来自主题目录(我的主题更改,所以我不想直接引用)我确信这是可能的,但我发现的每个示例似乎都不起作用。它们通常是:
asp:image ID =“Image1”runat =“server”ImageUrl =“〜/ Web / Mode1.jpg”/
其中Web将是我的主题文件夹中的子目录。建议主题目录将在运行时添加。
答案 0 :(得分:19)
如果您想在Theme文件夹中引用Image,那么我建议使用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,解释了如何使用主题,皮肤以及以不同的方式设置主题。
答案 1 :(得分: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") %>'>
答案 2 :(得分:0)
不确定我是否理解您的问题,但如果您在皮肤文件中有图像,例如以下内容,它将默认来自主题文件夹:
<asp:Image runat="server" ImageUrl="filename.ext" />
如果您希望它来自主题文件夹的子文件夹Web,请使用相对路径:
<asp:Image runat="server" ImageUrl="Web/filename.ext" />
您的示例指定了应用程序根目录的子文件夹:
<asp:image ID="Image1" runat="server" ImageUrl="~/Web/Mode1.jpg"/>
答案 3 :(得分: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";