Asp.Net下通過切換CSS換皮膚_.Net教程
推薦:ASP.NET DataTable去掉重復(fù)行的2種方法這篇文章主要介紹了ASP.NET DataTable去掉重復(fù)行的2種方法,本文直接給出去重代碼,需要的朋友可以參考下 第一種,使用Linq查詢表達(dá)式,code如下 ? 第二種方法 利用dataview來過濾datatable ?
換皮膚的方式有很多種,最簡單的通常就是切換頁面CSS,而CSS通常寫在外部CSS文件里。那么切換css其實就是更換html里的link href路徑。我在網(wǎng)上搜索了下。一般有兩種方式:
1,在頁面放一個holder控件。然后用編程方式把當(dāng)前用戶的風(fēng)格css link寫入頁面。
2,通過反射機制,逐個控件設(shè)置css樣式。
上面兩種方式都挺麻煩的,
第一種需要在每個頁面上放一個holder控件。類似的做法還有把link標(biāo)簽加runat=server的做法。頁面多了,都比較麻煩。
第二種不用考慮了。性能編程效率上問題多多。
記得以前在學(xué)習(xí)DNN的時候,在他里面發(fā)現(xiàn)了一種修改form里默認(rèn)的action地址的方式,直接參考下。還不錯:
直接重寫Render事件
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
StringWriter sw = new StringWriter() ;
HtmlTextWriter htmlWriter = new HtmlTextWriter(sw) ;
base.Render(htmlWriter) ;
//當(dāng)前用戶選擇的風(fēng)格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 > 0)
{
html = html.Insert(startPoint, css);
}
writer.Write(html) ;
}
把這個放在每個頁面的基類PageBase里。那就方便多了。
當(dāng)然,如果不想在讓每個page都繼承自定義的基類的方式,那也可以通過在HttpModule里寫。也很方便.
一處寫好,頁頁受用呀。
分享:ASP.NET的(HttpModule,HttpHandler)在以前的ASP時候,當(dāng)請求一個*.asp頁面文件的時候,這個HTTP請求首先會被一個名為inetinfo.exe進(jìn)程所截獲,這個進(jìn)程實際上就是www服務(wù)。截獲之后它會將這個請求轉(zhuǎn)交給asp.dll進(jìn)程,這個進(jìn)程就會解釋這個asp頁面,然后將解釋后的數(shù)據(jù)流返回給客戶端瀏覽器。其實ASP.DLL
- ASP.NET DataTable去掉重復(fù)行的2種方法
- ASP.NET的(HttpModule,HttpHandler)
- 應(yīng)用Response.Write實現(xiàn)帶有進(jìn)度條的多文件上傳
- asp.net用cookie保存用戶密碼自動登錄
- asp.net如何將后臺c#數(shù)組傳給前臺js?
- VC++根據(jù)explorer.exe進(jìn)程檢測用戶是否已登錄
- ASP.NET從客戶端中檢測到有潛在危險的request.form值的3種解決方法
- ASP.NET WebForm中%=%>與%#%>的區(qū)別
- 淺談ASP.NET中最簡單的自定義控件
- .net中webconfig 詳解
- ASP.NET抓取網(wǎng)頁內(nèi)容的實現(xiàn)方法
- ASP.Net下載大文件的實現(xiàn)方法
- 相關(guān)鏈接:
- 教程說明:
.Net教程-Asp.Net下通過切換CSS換皮膚
。