Master Page 內容頁中使用CSS

來源:互聯網
上載者:User
Master Page 內容頁中使用CSS

  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 中使用。

相關文章

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.