[C#]動態載入CSS檔案

  • 6405
  • 0

以撰寫程式的方式動態載入CSS檔案

之前有碰到一個狀況,
就是要在同一個頁面上動態的切換CSS風格,
當時無腦的我直覺想到...
阿就寫在頁面上連結到檔案就好了咩。

 

但問題來了...總不能每次都改 Code 的吧?

 

所以,既然是動態,
首先要做的就是把 CSS 檔案集中管理,放在同一資料夾內,
之後再把這些檔案類別紀錄在資料庫中,
最後程式端那邊只需「知道」是哪個檔案並且連結過去就好。

 

首先,先在程式裡定義存放 CSS 檔案的資料夾路徑,例如:

1 string path = "./wwwroot/MySite/css/";

 

接下來搭配資料庫,
這樣的好處是,萬一日後移動資料夾,
只需修改 path 的路徑就好了,不用大費周章更新整個資料庫。
(除非你連 CSS 檔名都一起變...)


這邊示範把 CSS 檔名從資料庫讀出來:

1 string cssName = MyDataReader["MyCssFile"].ToString();

 

如此一來可以得到 CSS 檔名囉,
接著結合之前定義路徑和檔名,結合之後就是完整的 CSS 檔案位置。

1 path += cssName;

 

最後,重點來了,
要在程式端指定 CSS ,
必須先初始化一個 HtmlGenericControl 物件,
並藉由增加這物件的屬性來連結到 CSS 檔案:

1 HtmlGenericControl objLink = new HtmlGenericControl("link");
2 objLink.Attributes.Add("rel", "stylesheet");
3 objLink.Attributes.Add("href", path);
4 objLink.Attributes.Add("type", "text/css");
5 this.Page.Header.Controls.Add(objLink);

  

搭配下拉式選單或其他元件,就可以有不同風格的外觀可以選擇了。:)