2008-10-14 6 views
13

테마 디렉토리에서 이미지를 설정하는 방법 (내 테마가 변경되므로 직접 참조하고 싶지 않음)이 방법이 가능할 수도 있지만 찾은 모든 예제가 보이지 않습니다. 작업.ASP.NET 테마 이미지

ASP : 그들은의 라인을 따라 보통 이미지 ID = "이미지 1"RUNAT = "서버"이미지 URL = "~/웹/Mode1.jpg"/

웹에서 하위 디렉토리 될 경우 내 테마 폴더. 주제 디렉토리를 제안하면 런타임에 추가됩니다. 내가 바로 당신의 질문을 이해하면

답변

19

테마 폴더에서 이미지를 참조하려면 SkinId를 사용하는 것이 좋습니다. 당신이 뭔가를 할 코드의 이미지를 사용 갈 때 각 테마 폴더의 스킨 파일 내부에는

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

는 테마에 따라 ...이

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

같은 것을 정의 할 응용 프로그램에서 올바른 테마 폴더에서 올바른 이미지를 가져옵니다. 여기

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

은 테마, 스킨을 사용하고, 주제를 여러 가지 방법을 설정하는 방법을 설명하는 good article이다.

0

확실하지,하지만 당신은 스킨 파일에서 이미지가있는 경우, 다음과 같은, 그것은 테마 폴더에서 기본적으로 제공됩니다

<asp:Image runat="server" ImageUrl="filename.ext" /> 

당신이 그것을 원하는 경우

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

<asp:Image runat="server" ImageUrl="Web/filename.ext" /> 

당신의 예는 응용 프로그램 루트 디렉토리의 하위 폴더를 지정 테마 폴더의 하위 폴더 웹에서 온 것은, 상대 경로를 사용

the MSDN page on themes and skins을 참조하십시오.

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

확실히 쉬운 방법이 있어야합니다? 예를 들어, 하이퍼 링크 컨트롤을 만들고 그 이미지를 지정하고 싶지만 그 이미지가 테마에 있다면, 어떻게해야합니까? web.config (예 : <page theme="MyTheme">)에서 전체 앱 테마를 제어하고 싶습니다. 내 사이트의 모든 항목에 테마를 지정하고 싶지 않습니다.

편집 : 나는 내 자신의 질문에 답을하고 있습니다.나는 스킨 파일에서 만든이 컨트롤 :

HyperLink hl = new HyperLink(); 
hl.SkinID = "HyperlinkOne"; 
:

<asp:Hyperlink runat="Server" SkinId="HyperlinkOne" 
ImageUrl="Images/one.png" Text="One" NavigateUrl="~/PageOne.aspx"/> 

그럼 내 코드에서 나는 단순히 이렇게