2011-10-21 4 views
2

런타임에 사용중인 CSS 파일을 변경하고 싶습니다.런타임에 CSS 파일 (테마) 변경 (ASP.NET)

두 CSS 파일 인 red.cssblue.css이 있다고 가정 해 보겠습니다. 마스터 페이지를 Page_Load에서

<link rel="Stylesheet" ID="Styles" runat="server"/>

:

내 마스터 페이지에서

, 내가있어 다음과 같은 링크 :

나는 다음과 같은 접근 방식을 시도했습니다

Styles.Href = Global.CSSPath;

Global.asax :

public static string CSSPath = "red.css"; (동일한 폴더에 있다고 가정)

이 방법이 효과적입니다. 그리고 물론 CSSPath의 값을 변경하고 blue.css 또는 기타로 만들 수있는 몇 가지 기능을 쉽게 구현할 수 있습니다. 이제는 이것이 한 사용자 또는 내 웹 응용 프로그램을 사용하는 모든 사용자에게 영향을 미치는지 알고 싶습니다.

한 사용자에게만 영향을주는 경우 : 감사합니다. 그렇지 않은 경우 : 런타임에 특정 사용자/세션에 대한 테마를 변경할 수있게하려면 어떻게해야합니까?

감사합니다,

데니스

답변

3

그것은 영향을 모든 사용자에 같은 것을 추가.

런타임에 테마를 변경하려면 지금과 같이 서버 측에서 수행 할 수 있지만 사용자 지정 값을 Session에서 가져와야합니다.

+0

고마워, 그게 내가 찾고 있었던거야! Global.asax의 모든 방법에서 세션에 액세스 할 수 없으므로 특정 접근 방식을 염두에두고 있습니까? –

+0

당신은 항상 내장 된 ASP.NET 테마를 사용할 수있는 옵션을가집니다. 또는 글로벌 수준에서이 작업을 시도하는 대신 모든 페이지에서 공통적 인 동작을 제공하려고합니다. 이전에는 각 페이지를 System.Web.UI.Page에서 파생 된 기본 클래스에서 상속 받음으로써이를 수행했습니다. 여기서는 파이프 라인에서 적절한 메소드를 오버라이드하고 여기에 속성을 설정합니다. 세션을 사용할 수 있으며 모든 WebForms 페이지가 새로운 기본 클래스에서 상속 받으면 "무료"로이 동작을 얻을 수 있습니다. 희망은 그 말이 맞습니다. –

3

시도 정적 (전역) 변수의 값을 읽는로 html

<script runat="server"> 

    protected void Page_Init(object sender, EventArgs e) 
    { 
     HtmlLink csslink = new HtmlLink(); 
     csslink.Href = "~/red.css"; 
     csslink.Attributes.Add("rel", "stylesheet"); 
     csslink.Attributes.Add("type", "text/css"); 
     Page.Header.Controls.Add(csslink);  
    } 
    </script>