Вопрос

Как мне настроить изображение из каталога темы (моя тема меняется, поэтому я не хочу напрямую ссылаться на нее) Я уверен, что это возможно, но каждый пример, который я нахожу, похоже, не работает.Обычно они имеют следующий вид:

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

где Web будет подкаталогом в моей папке тем.Предполагается, что каталог темы будет добавлен во время выполнения.

Это было полезно?

Решение

Если вы хотите сослаться на изображение в папке вашей темы, я предлагаю использовать SkinId.Внутри файла скина каждой папки темы вы должны определить что-то вроде этого

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

Когда вы собираетесь использовать изображение в своем коде, вы делаете что-то вроде этого...

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

В зависимости от темы, выбранной вашим приложением, оно подберет правильное изображение из правильной папки Theme.

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

Вот хорошая статья объясняя, как использовать темы, скины и устанавливать тему несколькими различными способами.

Другие советы

Есть ли у кого-нибудь еще понимание этого вопроса?

Другой вариант — расширить базовую страницу.Я добавил функцию, которая будет возвращать путь к изображению на основе текущей темы.

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

Не уверен, правильно ли я понял ваш вопрос, но если у вас есть изображение в файле скина, например следующее, оно по умолчанию будет взято из папки темы:

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

Видеть страница MSDN с темами и скинами.

Наверняка должен быть более простой способ?Например, если я хочу создать элемент управления 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";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top