換皮膚的方式有很多種
最簡單的通常就是切換頁面CSS
而CSS通常寫在外部CSS文件裡
那麼切換css其實就是更換html裡的link href路徑
我在網上搜索了下
一般有兩種方式
在頁面放一個holder控件
然後用編程方式把當前用戶的風格css link寫入頁面
通過反射機制
逐個控件設置css樣式
上面兩種方式都挺麻煩的
第一種需要在每個頁面上放一個holder控件
類似的做法還有把link標簽加runat=server的做法
頁面多了
都比較麻煩
第二種不用考慮了
性能編程效率上問題多多
記得以前在學習DNN的時候
在他裡面發現了一種修改form裡默認的action地址的方式
直接參考下
還不錯
直接重寫Render事件
protected override void Render(System
Web
UI
HtmlTextWriter writer)
{
StringWriter sw = new StringWriter() ;
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw) ;
base
Render(htmlWriter) ;
//當前用戶選擇的風格css
string css =
<link href=\
css url\
rel=\
stylesheet\
type=\
text/css\
>
;
string html = sw
ToString() ;
int startPoint = html
IndexOf(
</head>
StringComparison
CurrentCultureIgnoreCase);
if (startPoint >
)
{
html = html
Insert(startPoint
css);
}
writer
Write(html) ;
}
把這個放在每個頁面的基類PageBase裡
那就方便多了
當然
如果不想在讓每個page都繼承自定義的基類的方式
那也可以通過在HttpModule裡寫
也很方便
一處寫好
頁頁受用呀
;
From:http://tw.wingwit.com/Article/program/net/201311/12080.html