動態添加js、css、meta元素

2012年3月31日    出去工作的同學說大學的生活 是最好玩的,國家假期、週末、還來個寒暑假,玩到你蛋疼。大三最後一個學期了,下半年就要去實習了,閒的下來嗎?

      由於網站的主要頻道頁和列表頁的頭部和底部都是一樣的,如果將每個頁面放在單獨的頁面中,當頭部和底部需要更改時維護量太大。於是想把頭部和底部做成母版頁,頻道頁和列表頁的具體內容放到內容頁中。這樣當頭和底需要改動時,只要修改一下母版頁就可以了。

      當對於css與js來說,全放在母版頁中,有點太過了。有點多。

      我測試有兩種方法:

      1、在母版頁中添加一個入口(會提示錯誤,但能運行)

      <head runat="server">
            <link href="css/admin_basic.css" rel="stylesheet" />
            <asp:ContentPlaceHolder ID="header" runat="server">
            </asp:ContentPlaceHolder>
      </head>

         然後再在內容頁中添加就行。

      2、下面是我寫的一個類,用於動態添加

         using System;
         using System.Collections.Generic;
         using System.Web;
         using System.Web.UI;
         using System.Web.UI.HtmlControls;

/// <summary>
///AddHeaderControl 是用於動態添加head中的controls,像css,js,優化的時候用到的Meta元,常見在引用母版的內容頁上使用
/// </summary>
 public class AddHeaderControl
 {
    /// <summary>
    /// 在head中動態鏈接js
    /// </summary>
    /// <param name="page">當前page頁</param>
    /// <param name="path">js路徑</param>
    public static  void AddScript(Page page, string path)
    {
        HtmlGenericControl jscontrol = new HtmlGenericControl("script");//創建一個不由特定.net framework使用的控件,因沒有htmlsrcipt
        jscontrol.Attributes.Add("type", "text/javascript");//加屬性
        jscontrol.Attributes.Add("src", path);
        page.Header.Controls.Add(jscontrol);//添加 到頭
    }
    /// <summary>
    /// 在head中動態鏈接css
    /// </summary>
    /// <param name="page">當前page頁</param>
    /// <param name="path">css路徑</param>
    public static void AddLink(Page page, string path)
    {
        HtmlLink link = new HtmlLink();
        link.Href = path;
        link.Attributes["rel"] = "stylesheet";
        link.Attributes["type"] = "text/css";
        page.Header.Controls.Add(link);
    }
    /// <summary>
    /// 在head中添加描述,優化中常需要用到
    /// </summary>
    /// <param name="page">當前page頁</param>
    /// <param name="content">要添加的內容</param>
    public static void AddMetaDescription(Page page, string content)
    {
        HtmlMeta hm = new HtmlMeta();
        hm.Attributes["name"] = "description";
        hm.Attributes["content"] = content;
        page.Header.Controls.Add(hm);   
    }
    /// <summary>
    /// 在head中添加keyswords,優化中常用到
    /// </summary>
    /// <param name="page">當前page頁</param>
    /// <param name="content">要添加的內容</param>
    public static void AddMetaKeywords(Page page, string content)
    {
        HtmlMeta hm = new HtmlMeta();
        hm.Attributes["name"] = "keywords";
        hm.Attributes["content"] = content;
        page.Header.Controls.Add(hm);   
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章