Изображения темы ASP.NET
Как установить образ из каталога темы (моя тема меняется, поэтому я не хочу напрямую ссылаться) Я уверен, что это возможно, но каждый пример, который я нахожу, не работает. Они обычно идут по строкам:
asp: image ID = "Image1" runat = "server" ImageUrl = "~/Web/Mode1.jpg" /
где Web будет подкаталогом в папке тем. Предложение каталога темы будет добавлено во время выполнения.
Ответы
Ответ 1
Если вы хотите ссылаться на изображение в папке "Тема", я предлагаю использовать 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
Вот хорошая статья, объясняющая, как использовать темы, скины и задавать тему несколькими способами.
Ответ 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") %>'>
Ответ 3
Не уверен, правильно ли я понял ваш вопрос, но если у вас есть изображение в файле скина, например, следующее, оно будет появляться по умолчанию из папки темы:
<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"/>
Смотрите страницу MSDN по темам и скинам.
Ответ 4
Должен быть более простой способ? Например, если я хочу создать элемент управления HyperLink, и я хочу указать для него изображение, но это изображение в теме, как мне это сделать? Я хочу, чтобы тема для всего приложения контролировалась с помощью web.config(например, <page theme="MyTheme">
), я не хочу указывать тему для каждого элемента на моем сайте.
edit: Я ответил на свой вопрос. Я создаю в файле скина этот элемент управления:
<asp:Hyperlink runat="Server" SkinId="HyperlinkOne"
ImageUrl="Images/one.png" Text="One" NavigateUrl="~/PageOne.aspx"/>
Тогда в моем коде я просто делаю это:
HyperLink hl = new HyperLink();
hl.SkinID = "HyperlinkOne";