2009-06-12 4 views
0

요청 URL에 따라 기존 웹 사이트의 브랜드를 변경 (로고, 색상, 이미지 등) 할 수 있도록 테마를 구현하고 있습니다. 나는 그것을하는 방법을 이해하고 이미지의 URL과 관련된 몇 가지 예외를 제외하고는 잘 작동하는 스킨을 가지고있다.테마 이미지 URL Rebasing asp.net

특히 나는 피부에 적용 할 수없는 제어 특성을 가지고 있습니다. 테마를 구현하기 전에 다음과 같이 보입니다.

<DisplayImageChecked Url="~/Images/BobIcon-Green.png" /> 

분명히 테마와 함께 작동하지 않습니다. 그래서 많은 시행 착오와 읽기 후에 나는 이것을 다음과 같이 구현하려고합니다 :

<DisplayImageChecked Url="~/AppThemes/<%= Page.Theme %>/Images/BobIcon-Green.png" /> 

그러나 이것은 작동하지 않습니다. 생성 된 html은 다음과 같습니다.

<img src="AppThemes/%3C%25=%20Page.Theme%20%25%3E/Images/BobIcon-Green.png"/> 

올바른 방향의 모든 포인터가 좋습니다.

데이비드

+0

가 Repeater, ListView 등과 같은 데이터 바운드 컨트롤에 포함되어 있습니까? – Kane

+0

예 데이터 바인딩 된 컨트롤에 있습니다. 이 클래스는 Developer Express의 ASPxGridView에있는 GridViewDataCheckColumn의 속성입니다. – daveywc

답변

0

방금 ​​테마와 같은 폴더에있는 이미지를 덤프 할 수없는 이유가 있나요? 예를 들어 "image.gif"라고 말한 이미지를 테마 폴더에 넣으면 피부에 직접 그 이미지를 참조 할 수 있습니다.

ImageUrl="image.gif" 

이 스킨을 페이지의 컨트롤에 적용하면 문제가 해결됩니다. 또한 동적 인 URL 작업을 수행하는 것보다 훨씬 쉽습니다.

+0

유감스럽게도 마스터 페이지가 여기에 관련되어 있기 때문에 유감스럽게도 도움이되지 않습니다. – daveywc

2

를 사용하여 데이터 바인딩 컨트롤 내부의 바인딩 구문 (시청 따옴표 대 한) :

<DisplayImageChecked Url='<%# "~/AppThemes/" + Page.Theme + "/Images/BobIcon-Green.png" %>' /> 
+0

이것은 ASPxGridView에서 사용할 때 가장 좋은 접근 방법입니다. –

0

또한 사용할 수있다 "이미지/BobIcon-Green.png"URL로. ASP는 Url을 당신의 테마 안에있는 디렉토리로 해석합니다.

+0

OP에 참조하는 홈 폴더에 이미지가있는 경우 어떻게됩니까? – Lenin

0

여기 당신의 작업에 대해 이동 할 수있는 권리 방법 :

가 UrlProperty 속성으로 재산을 꾸미이 자동으로 적절한 URL로 부분 URL을 번역하는 ASP.NET을 말할 것이다.

"~/AppThemes /"+ Page.Theme + "/Images/BobIcon-Green.png"를 사용하면 트릭을 수행 할 수 있지만 모든 작업을 직접 수행해야하므로 항상 좋은 방법입니다. 모든 작업을 ASP로 남겨 두는 연습