ASP.NET Theme Изображения - PullRequest
       11

ASP.NET Theme Изображения

13 голосов
/ 14 октября 2008

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

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

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

Ответы [ 4 ]

19 голосов
/ 14 октября 2008

Если вы хотите сослаться на изображение в папке Theme, тогда я предлагаю использовать 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

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

2 голосов
/ 23 октября 2008

Кто-нибудь еще знает этот вопрос?

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

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 голосов
/ 01 декабря 2008

Должен быть более простой путь, конечно? Например, если я хочу создать элемент управления 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";
0 голосов
/ 14 октября 2008

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

<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 по темам и оболочкам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...