본문 바로가기

ASP.NET

[ASP.NET] 테마(Themes) #1

이번 시간에는 테마(Themes)에 대해 알아보도록 하겠습니다.

테마는 '제목', '주제', '화제'등으로 해석할 수 있는데 ASP.NET 에서는 웹사이트의 특정 스타일(분위기 또는 주제)을 지정하는데 사용하는 기능을 말합니다!!!

예전에는 HTML 태그 스타일의 관리를 위해 CSS를 사용했는데  CSS만으로 ASP.NET 서버 컨트롤의 스타일을 일관성 있게 제어하기에는 부족한 점이 많아서 테마가 나오게 되었습니다.

ASP.NET 2.0에서는 테마 기능을 사용하기 위해 App_Themes라는 ASP.NET 응용 프로그램 폴더를 제공하며 확장자가 .skin인 새로운 형태의 스킨 파일을 제공합니다.


위의 그림을 보면 APP_Themes 폴더 하위에 Christmas와 Summer라는 테마가 정의 되어있는 것이 보이죠?
그 테마들의 하위 폴더에 스킨폴더가 있습니다. 이 스킨파일에서 각 서버 컨트롤의 스킨을 정의합니다. 즉 서버 컨트롤이 외형적으로 보여지는 모습을 지정할 수 있는 파일이죠. 

Skin File에 대해 더 자세히 알아 볼까요!

TextBox, Button 컨트롤의 스킨을 예로 들어서 살펴보도록 하겠습니다.
<asp:TextBox runat ="server" ForeColor="red" BackColor="blue"/>
<asp:Button runat ="server" ForeColor="red" BackColor="blue"/>

여기서는 아무문제 없습니다.
<asp:TextBox runat ="server" ForeColor="red" BackColor="blue"/>
<asp:Button runat ="server" ForeColor="red" BackColor="blue"/>
<asp:Button runat ="server" ForeColor="White" BackColor="Yellow"/>

하지만 이럴경우 Button에는 두가지 스킨이 선언이 되어있으므로 Button은 어떤 스킨을 따라야 할지 모르므로 문제가 발생하게 됩니다.
<asp:TextBox runat ="server" ForeColor="red" BackColor="blue"/>
<asp:Button runat ="server" ForeColor="red" BackColor="blue"/>
<asp:Button runat ="server" ForeColor="White" BackColor="Yellow" SkinID="BlueButton"/>

대신 위 처럼 SkinID 특성을 사용해 각 스킨을 구분하면 동일한 서버 컨트롤의 스킨을 여러 개 정의할 수 있습니다.