2012-02-07 3 views
6

ASP.NET 웹 사이트의 기본 테마를 만들 수 있습니까? 내가 "Default"라는 테마를 가지고 선택한 필자 경우기본 ASP.NET 테마

예를 들어, 테마는 "NewTheme"라고하고 나는 "NewTheme"에 존재하지 않지만 같은 "Default" 테마에 존재하는 파일 참조 :

<asp:image id="img" runat="server" ImageUrl="~/Images/image.jpg" /> 

"/App_Themes/Default/Images/image.jpg"이없는 경우 "/App_Themes/NewTheme/Images/image.jpg"에 표시 될 수 있습니까?

CSS 클래스가 "NewTheme"에 없지만 "Default"에서 "Default"를 사용할 수 있습니까? 사실, 모든 기본 스타일을 처음으로 가져 와서 "NewTheme"에 충돌이있는 경우 우선 적용하면 더 좋을 것이라고 생각합니다.

나는 살아야 "es" 현지화를 선택한 경우 때문에 글로벌 참조가 이와 비슷한 일을 알고, 그리고 키는 webreference.resx.es 파일에 존재하지 않는하지만 webreference.resx에, 다음 itll는 거기에서 값을 취한다.

이 테마는 특정 테마가 변경된 특정 테마 만 상상할 수 있기 때문에 ASP.NET 테마에서 중요한 기능이라고 생각합니다. 모든 이미지와 모든 스타일이 항상 각 테마마다 완전히 다를 것이라고 상상할 수 없습니다. 따라서이 기능이 없으면 스타일/이미지를 복제하는 경우가 될 것입니다.이 스타일은 분명 팬이 아닙니다.

+3

Bounty on this this! app_themes 기능을 좋아하지만 기본 테마를 상속받지 못하는 것이 큰 고통입니다. – Malk

답변

1

이 기능은 ASP.NET에 내장되어 있지 않습니다. 그럼에도 불구하고, 당신은 매우 쉽게 구현할 수 :

  1. 후크 Global.asax에 또는 사용자 지정 HTTP 모듈의 HttpApplication.BeginRequest 이벤트입니다.
  2. "/ App_Themes/NewTheme /"에서 URL이 포함 된 요청을 찾습니다.
  3. HttpRequest.PhysicalPath에 파일이 있는지 확인하십시오.
  4. 파일이 존재하지 않으면 HttpContext.RewritePath으로 전화하고 요청 URL의 "NewTheme"을 "Default"로 바꿉니다.
+0

제 편집을 참조하십시오. 이 같은 수정이 CSS에서 효과가있을 것이라고 생각하십니까? – Curt

+0

CSS의 경우, @import url ("../ Default/stylesheet.css")'를 "/App_Themes/NewTheme/stylesheet.css"의 맨 위에 두어 모든 CSS CSS 계단식 규칙이 다음과 같이 작동하도록하는 것이 좋습니다. 보통의. –

+0

@Curt :이 대답은 작동하지 않습니까? 명확하지 않습니까? 아니면 자세한 코드를 찾으십니까? –

2

설명하는 기본 테마는 ASP.NET에서 지원되지 않습니다. 일반 ThemesStyleSheetTheme이 있지만 동적으로 변경하면 개별 컨트롤이나 정적 파일보다 페이지 요청 수준에서 더 유용합니다.

URL 재 작성 또는 라우팅을 사용하여 정적 파일 테마의 코드를 작성할 수 있습니다.하지만 테마는 더 이상 없습니다.

<asp:Image>과 같은 컨트롤의 경우 "theme"폴더의 계층 구조에 어떤 파일이 있는지에 따라 ImageUrl과 같은 속성을 수정하고 속성을 수정할 수 있습니다. 그런 다음 태그 매핑을 사용하여 해당 컨트롤의 모든 인스턴스를 새 태그로 대체합니다. 태그 변경은 필요하지 않습니다.

FWIW, Global.asax의 BeginRequest 이벤트는 IIS의 동적 파일에 대해서만 호출됩니다 (Cassini는 정적으로도 호출합니다). IIS에서 통계를 지원하려면 HttpModule이 필요하며 통합 모드에서 실행되도록 IIS를 구성해야합니다.