Asp.Net下經過切換CSS換皮膚

換皮膚的方式有不少種,最簡單的一般就是切換頁面CSS,而CSS一般寫在外部CSS文件裏。那麼切換css其實就是更換html裏的link href路徑。我在網上搜索了下。通常有兩種方式:css

1,在頁面放一個holder控件。而後用編程方式把當前用戶的風格css link寫入頁面。
2,經過反射機制,逐個控件設置css樣式。
上面兩種方式都挺麻煩的,
第一種須要在每一個頁面上放一個holder控件。相似的作法還有把link標籤加runat=server的作法。頁面多了,都比較麻煩。
第二種不用考慮了。性能編程效率上問題多多。html

發現了一種修改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\">" ;ide

            string html = sw.ToString() ;
            int startPoint = html.IndexOf("</head>", StringComparison.CurrentCultureIgnoreCase);
            if (startPoint > 0)
            {
                html = html.Insert(startPoint, css);
            }性能

            writer.Write(html) ;
        }
把這個放在每一個頁面的基類PageBase裏。那就方便多了。
固然,若是不想在讓每一個page都繼承自定義的基類的方式,那也能夠經過在HttpModule裏寫。也很方便.url

相關文章
相關標籤/搜索