程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 動態控制Page頁的Head信息

動態控制Page頁的Head信息

編輯:關於MYSQL數據庫

在以前的ASP程序裡我們經常用使用Response.Write動態輸出網頁Header信息,但在ASP.Net裡這個所謂代碼與UI分離的指導思想不再希望我們這樣做了(當然如果您願意還可以,這畢竟只是建議而已),以前見過別人用<title ranut="server" id="titleControl">Default Title</title>設置標題的,但本人認為不是很好,因為這會產生多余的id="titleControl" 個人感覺使用Literal控件控制比較好,因為它不會產生一個多余的字符:),也有人使用JS的動態設置標題,但這你讓搜索引擎怎麼辦?

動態控制Page頁的Head信息其實很簡單
先看演示: http://www.lvjiyong.com/demo/ASPnet/setheader/
演示做的很簡單,大家可以下了源碼好好看,注解裡面都有了

主要使用了Literal與PlaceHolder
方法放置在BasePage裡,下次讓WebForm繼承BasePage類就可以調用了 
使用Literal設置Title信息 
使用PlaceHolder載入樣式表與腳本 
Literal允許我們直接設置文本信息,使用時我們先讓程序查找是否有指定的Literal控件,如果有則設置Text


        /**//// <summary>
        /// 設置Head信息
        /// </summary>
        /// <param name="_name">控件</param>
        /// <param name="_control">文本</param>
        private void setHeader(string _control,string _text)
        {
            Literal obj = this.FindControl(_control) as Literal;
            if(obj != null)
            {
                obj.Text = _text;
            }
        }
比如我們在Head區設置了<ASP:Literal id="PageTitle" runat="server" />,我們可以這樣設置標題
這裡先准備一個方法
  /**//// <summary>
  /// 設置網頁標題
  /// </summary>
  /// <param name="_title">網頁標題</param>
  protected void SetTitle(string _title)
  {
   setHeader("PageTitle","<title>" + _title + "</title>");
  在WebFrom中我們就可以這樣設置標題了
this.SetTitle("呂的部落格");
Description,KeyWords等的方法一樣,不過要設置Meta,這個就不講了,可以看源碼

下面我再說一下JS與CSS的載入,這次我們用到的是PlaceHolder控件,為什麼用這個不沿用Literal,自己想想
PlaceHolder一般只占用位置,方便我們動態加載控件,這樣載入JS與CSS就方便多了
首先了也是查找指定的PlaceHolder控件
        /**//// <summary>
        /// 查找LoadHeader的PlaceHolder容器
        /// </summary>
        /// <returns></returns>
        private Control findHeader()
        {
            return this.FindControl("LoadHeader");
        }再是動態加入控件
        /**//// <summary>
        /
// 裝載控件到PlaceHolder控件
        /// </summary>
        /// <param name="_obj"></param>
        protected void LoadPlaceHolder(HtmlGenericControl _obj)
        {
            objHeader = findHeader() as Control;

            //載入腳本文件
            if(objHeader != null)
            {
                objHeader.Controls.Add(_obj);

            }
        }要載入CSS或JS我們先用HtmlGenericControl創建子控件然後加到PlaceHolder控件中
        /**//// <summary>
        /// 載入指定的樣式表文件
        /// </summary>
        /// <param name="_CSSPath">樣式表文件地址</param>
        protected void LoadCss(string _CSSPath)
        {


            HtmlGenericControl objCSS = new HtmlGenericControl("link");
            objCSS.Attributes["rel"] = "stylesheet";
            objCss.Attributes["type"] = "text/CSS";
            objCss.Attributes["href"] =  _CSSPath;
            objCSS.Attributes["media"] =  "screen";
            this.LoadPlaceHolder(objCSS);


        }
那我們在WebForm中要載入樣式表只要使用
this.LoadCSS("樣式表地址");載入JS一樣,就不說了

在源碼中我寫的功能比這裡說的強一點點,大家可以自己下了看看.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved