李晓亮的博客

导航

关于Asp.net母板页中动态加入CSS和JS文件

 

ASP.NET中使用母版页最大的好处就是当有许多相似的页面时只用加一个母版页,每个页面用这个母版页生成内容页,然后根据情况修改每个内容页中的内容,保持页面布局的统一,同时也减少了代码量。

但另一个突出的问题是使用母版页后,每个内容页中没有了<head></head>标记,因为这都在母版页中有了,而这对修改标题、加载JS/CSS等文件都有影响,前面我已经说过在ASP.NET中使用母版页后统一网页标题,那这篇就来说说如何加载JS/CSS等文件。

与ASP.NET中使用母版页后统一网页标题中修改标题的原理一样,加载JS/CSS等文件可以在内容页中加,也可以在母版页中统一加载。
1、在单个内容页中加载

将下面两段段代码放入内容页的Page_Load中即可,很简单了,也不再多解释。
加载JS文件

#region 加载JS文件
HtmlGenericControl JSControl = new HtmlGenericControl("script");
JSControl.Attributes.Add("type", "text/javascript");
JSControl.Attributes.Add("src", "JS/js.js");
Page.Header.Controls.Add(JSControl);
#endregion

加载CSS文件
HtmlLink CssControl = new HtmlLink();
CssControl.Href = "/CSS/Style.css";
CssControl.Attributes.Add("rel", "stylesheet");
CssControl.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(CssControl);

2、在母版页中统一加载
string requestContentType = this.ContentPlaceHolder1.Page.GetType().ToString();
if (requestContentType == "ASP.admin_c2c_user_management_aspx")//获取请求的内容页类型,格式如ASP.目录名_文件名_aspx(好像文件名中的“-”都会被转换成了“_”)
{
    //加载JS文件
    HtmlGenericControl JSControl = new HtmlGenericControl("script");
    JSControl.Attributes.Add("type","text/javascript");
    JSControl.Attributes.Add("src", "JS/js.js");
    Page.Header.Controls.Add(JSControl);
    // 加载CSS文件
    HtmlLink CssControl = new HtmlLink();
    CssControl.Href = "/CSS/Style.css";
    CssControl.Attributes.Add("rel", "stylesheet");
    CssControl.Attributes.Add("type", "text/css");
    Page.Header.Controls.Add(CssControl);
}

======================================================= 
现在.NET2008里面使用母版页的页面有两个控件,第一个就是在页面中添加和中间的信息,可以实现不同的页面使用不同的JS;
就是母版页中的head区域有一个asp:ContentPlaceHolder id=”head” runat=”server”,body区域有asp:ContentPlaceHolder id=”ContentPlaceHolder1″ runat=”server”
 。这样使用母版页的时候就可以分别在head和body添加内容了。
======================================================= 

 

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

}

posted on 2011-08-07 04:47  LeeXiaoLiang  阅读(231)  评论(0)    收藏  举报