20080409 为 ASP.NET2.0 模板页的 Content 页面添加 CSS 样式

 
Asp.Net 2.0 中为支持页面内容重用而引入了 Master Page 和 Content Page,Master Page 类是模板中页面公共部分,Content Page 为页面差异部分。

从实现上来说,MasterPage 类是从 UserControl 类派生而来,因而具有容器功能。当页面被请求,在 Page 类的 Init 事件发生前,MasterPage 页控件被加载到 Content Page 中。

可以在 MasterPage 页中加载页面的 CSS 样式表,或者 Asp.Net 2.0 中会加载 App_Themes 中的 CSS 文件,基本能满足对样式的定义需求。

但 Content 页面却失去了加载CSS的能力。因为 CSS 需要在页面的 head 部分加载,难道需要把差异化很大页面的 CSS 都统一写到一个 CSS 文件中,在打开页面时统一加载吗?

不用。方法如下:

可以在 content 页使用 HtmlGenericControl 动态调整 DOM 结构,使得两种类型内嵌和外链的样式表文件都能支持。

内嵌CSS支持
  HtmlGenericControl node = new HtmlGenericControl("style");
  node.Attributes.Add("type", "text/css");
  node.InnerText = style;
  Page.Header.Controls.Add(node);

外部样式支持
  HtmlLink link = new HtmlLink();
  link.Attributes.Add("type", "text/css");
  link.Attributes.Add("rel", "stylesheet");
  link.Attributes.Add("href", cssUrl);
  Page.Header.Controls.Add(link);

 

原文地址:https://www.cnblogs.com/likun/p/1144589.html