动态添加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);
}
}