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

來源:互聯網
上載者:User

 換皮膚的方式有很多種,最簡單的通常就是切換頁面CSS,而CSS通常寫在外部CSS檔案裡。那麼切換css其實就是更換html裡的link href路徑。我在網上搜尋了下。一般有兩種方式:

1,在頁面放一個holder控制項。然後用編程方式把目前使用者的風格css link寫入頁面。
2,通過反射機制,逐個控制項設定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 > 0)
{
html = html.Insert(startPoint, css);
}

writer.Write(html) ;
}
把這個放在每個頁面的基類PageBase裡。那就方便多了。
當然,如果不想在讓每個page都繼承自訂的基類的方式,那也可以通過在HttpModule裡寫。也很方便.
一處寫好,頁頁受用呀。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.