ASP.NET 2.0配合MasterPage的优化CSS

转载 2007年10月12日 16:26:00
ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利。然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage 不能支持设计时界面,以及下面要提到的Content Page 中增加 CSS 的问题。 

  通常,在没有 2.0 之前,我们在页面里要增加一个 CSS 引用的语法如下:

<link rel="stylesheet" href="css/test.css" />

  原本是很平常的做法。但是在一个 MasterPage 的子页面中,出现了一个很尴尬的局面,就是:我们该把上述代码放到什么位置?

  因为 MasterPage 的具体内容页面中,只能定义一个个的 <asp:Content /> 标签的内容。我们按照通常的做法在 aspx 里面无法对页面的 <header/> 内容进行控制。而这个 <link/> 标签又必须放在 <header/> 内。我试验过在 <asp:Content /> 内部加入这行代码,但是会提示出错的。

  同时,我们也无法在 MasterPage 的 <header/> 内部放好一个 ContentPlaceHolder 用于将来放入 CSS 的引用代码。

  因此我的做法是定义了一个 helper 类如下:

static public class ControlHelper
{
 static public void AddStyleSheet(Page page, string cssPath)
 {
  HtmlLink link = new HtmlLink();
  link.Href = cssPath;
  link.Attributes["rel"] = "stylesheet";
  link.Attributes["type"] = "text/css";
  page.Header.Controls.Add(link);
 }
}

  这样,在具体页面,我们就可以通过如下代码添加 CSS 引用:

protected void Page_Load(object sender, EventArgs e)
{
 ControlHelper.AddStyleSheet(this.Page, "css/projectPage.css");
}

  并且,这个代码支持在具体内容页面,或者一个嵌套的 Master Page 中使用。

  说到这里也许有人会问,为什么要把 CSS 分开成这样来加载呢?有必要吗?我把所有页面的 CSS 定义到几个公共 CSS 文件里岂不是很好?

  其实,熟悉 web 标准的 HTML 制作的朋友一定知道,在比较完美的状态下,页面的 html 和用于表现的 CSS 应该彻底分离。而我们基于 web 标准的设计,通常是先做出一个 Master Page 中各个框架 div 的定位代码,以及 header,footer 部分的修饰代码。这些是每个内容页面都要用到的,会放在一个统一的 CSS 里面。其他的具体内容页面,每个页面又会有各自不同的内容的布局,修饰样式,因此我把每个具体页面特定的部分放在它自己的 CSS里。这样就形成了一个按照 Master Page 的实现层次(可嵌套),逐层合并的 CSS 模型。其好处是实现了每个 CSS 文件的职责分离,更容易理解和维护。 

ASP.NET 2.0配合MasterPage的优化CSS

  ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利。然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPag...
  • lee576
  • lee576
  • 2007年06月10日 23:59
  • 876

ASP.NET 2.0配合MasterPage的优化CSS

ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利。然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage ...
  • zlz_212
  • zlz_212
  • 2006年08月31日 15:29
  • 685

asp.net动态设置masterpage实现换肤

using System; using System.Collections; using System.Configuration; using System.Data; using System....
  • nxiaoping
  • nxiaoping
  • 2014年03月20日 07:59
  • 1397

如何取得和当前页面联系的MasterPage中的变量

例如: 1. A.aspx用了一个叫MasterPage.master的母板页。 MasterPage.master.cs里定义了一个 int 型的变量 flag = 1 如何在A.aspx.cs里读...
  • muziduoxi
  • muziduoxi
  • 2010年03月16日 19:35
  • 3277

Asp.net 2.0 在contentPage中访问MasterPage

如果用到MastePage.有时候,我们需要在开发过程中在ContentPage访问masterpage中的属性,方法或者控件的信息。这个Demo说明了如何来实现这样的作业>  其实很简单,关键的一步...
  • JustLovePro
  • JustLovePro
  • 2008年06月10日 15:07
  • 2599

[NET]MasterPage嵌套及MasterPage中的控件和变量的访问

MasterPage嵌套及MasterPage中的控件和变量的访问1. 嵌套母版页(1) 主母版页 MainMasterPage.master     I...
  • szwangdf
  • szwangdf
  • 2007年05月08日 14:00
  • 2111

MasterPage嵌套及MasterPage中的控件和变量的访问

MasterPage嵌套及MasterPage中的控件和变量的访问1. 嵌套母版页(1) 主母版页 MainMasterPage.master Maste...
  • edisundong
  • edisundong
  • 2007年09月18日 15:50
  • 3325

如何在asp.net页面使用css和js

记录在c#开发中的小问题。
  • u014113117
  • u014113117
  • 2016年05月02日 17:54
  • 495

Asp .net MasterPageFile母版页

MasterPageFile母版页 本来想用最简洁的语言来表述,却发现把它搞得更复杂了。 刚开始学,什么都不懂,看到了这段代码,才促使自己去研究MasterPageFile到底是什么含义。...
  • ssrrxx111
  • ssrrxx111
  • 2014年08月21日 18:10
  • 1166

ASP.NET2.0MasterPage使用技巧总结

来源: 博客园  作者: 漂泊雪狼的博客    好久没有更新博客了,想了想写一篇总结一下关于MasterPage的小技巧,都是自己在实际工作中遇到问题->解决问题发现,有更好的方法大家可直接指出。  ...
  • tongdoudpj
  • tongdoudpj
  • 2007年09月23日 17:49
  • 513
收藏助手
不良信息举报
您举报文章:ASP.NET 2.0配合MasterPage的优化CSS
举报原因:
原因补充:

(最多只允许输入30个字)