ASP.NET主题图像

时间:2008-10-14 09:22:21

标签: asp.net themes

如何将图像设置为来自主题目录(我的主题更改,所以我不想直接引用)我确信这是可能的,但我发现的每个示例似乎都不起作用。它们通常是:

asp:image ID =“Image1”runat =“server”ImageUrl =“〜/ Web / Mode1.jpg”/

其中Web将是我的主题文件夹中的子目录。建议主题目录将在运行时添加。

4 个答案:

答案 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"/> 

请参阅the MSDN page on themes and skins

答案 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";