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);
}
}