以撰寫程式的方式動態載入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);
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);
搭配下拉式選單或其他元件,就可以有不同風格的外觀可以選擇了。:)