国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

動態控制Page頁的Head信息

2019-11-18 19:04:45
字體:
來源:轉載
供稿:網友

在以前的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一樣,就不說了

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬安县| 丽水市| 灵川县| 确山县| 双流县| 崇义县| 巩义市| 大邑县| 博兴县| 台东县| 曲沃县| 镇平县| 富源县| 花莲县| 玉林市| 扎赉特旗| 贵港市| 益阳市| 南城县| 桦甸市| 乐亭县| 龙川县| 乌兰察布市| 临夏市| 鄂州市| 富川| 新宁县| 西乌珠穆沁旗| 福州市| 永仁县| 彩票| 深水埗区| 泰和县| 武乡县| 徐汇区| 中阳县| 卫辉市| 蓝山县| 榆中县| 托克逊县| 九龙坡区|