2011-03-14 9 views
0

우리는 다국어 사이트 또는 문화적으로 중요한 사이트를 보유하고 있으며 일부 정적 콘텐츠를 대상으로 지정해야합니다. 이것을 위해 나는 테마를 사용하고 있습니다. 으로 가장 쉽게 얻을 수있는 방법이지만, 저의 삶은 이미지를 얻을 수 없습니다.프로그래밍 방식으로 ASP.NET 테마 만들기 :

코드 숨김으로 테마를 설정하고 있는데 처음에는 이것이 문제일지도 모른다고 생각했지만, 확인하는 동안 올바른 일을하고있는 것 같습니다 (Pre-Init에 설정). 어떤 이유 그러나 이미지가 전혀 통해 뽑아되지 않는 내용은

<asp:Image runat="server" ImageUrl="images\image.jpg"/> 

:

나는 같은 App_Themes/ThemeName/가 자동으로 해결 될 때 상대 경로를 사용하여 이미지를 참조 할 수있을 것으로 기대합니다.

(나는 성공적으로 적용되는 Theme = CurrentSite.CultureName, 인, 확신, 유일한 정말 관련 부분) 테마를 설정하기위한 우리가 자리에있는 코드 : 위의 코드에서

Private Sub SetTheme() 
    Dim themesPath = Server.MapPath("~/App_Themes") 
    If Directory.Exists(themesPath) Then 
     Dim themePaths = Directory.GetDirectories(themesPath) 
     Dim themePathInfo As DirectoryInfo 
     For Each _path In themePaths 
      themePathInfo = New DirectoryInfo(_path) 
      If Not themePathInfo Is Nothing Then 
       If themePathInfo.Name = CurrentSite.CultureName Then 
        Theme = CurrentSite.CultureName 
        Exit For 
       End If 
      End If 
     Next 
    End If 
End Sub 

, CurrentSite.CultureName은 필요한 모든 리소스를 포함하는 기존의 해당 테마 폴더가있는 언어 문화 이름 (예 : en-gb 또는 nn-no)입니다.

페이지의 주소는 EnableTheming입니다. 주소는 True입니다. 또한 테마 설정 코드를 제거하고 페이지에 Theme="en-gb"을 사용하여 테마를 적용 해 보았습니다.

URL이 해결되지 않은 이유는 무엇입니까?

답변

1

스킨 파일을 사용하십시오.

<asp:Image runat="server" SkinID="SomeImage/> 

그리고 당신의 App_Themes\MyTheme\ 폴더에

는, 새로운 스킨 파일 (MyTheme.skin)를 추가하고이 추가 :에 이미지 태그를 변경 App_Themes\MyTheme\

<asp:Image runat="server" SkinID="SomeImage" ImageUrl="images\image.jpg"/> 

이 이미지의 피부가 지금 image.jpg를 가리키는 폴더.

당신이 당신의베이스 페이지에서이 작업을 수행 할 수있는 동적 이미지의 경우

(당신이 하나를 가지고 가정) : 나는 당신이 실제로 무슨 일을하는지 볼 수 없기 때문에,

public string ThemePath { get { return "~/App_Themes/" + this.Theme + "/"; } } 

public string MapThemePath(string relativePath) 
{ 
    return string.Format("{0}{1}", this.ThemePath, relativePath); 
} 

을하지만,이는 말할 수 없다 권장 솔루션. 일반적으로 테마에는 필요한 것 또는 레이아웃과 표시 만 포함됩니다. 당신은 테마에 속하는 것처럼 들리지 않는 역동적 인 이미지를 말하는 겁니까? 확실하지 않은, 단지 생각.

+0

모든 이미지에 대해? 일부 이미지는 데이터에 따라 즉석에서 생성되므로 이것이 내 주요 관심사입니다. –

+0

오케이 - 내 대답을 업데이트했습니다. –

+0

답변 해 주셔서 감사합니다. 이것은 내가 연기하고 있었던 것의 종류 다. 그러나 그것이 유일한 해결일지도 모르는 것처럼 보인다 - 적어도 당분간. –

관련 문제