ASP.NET 如何動態修改 Header 屬性如添加 Meta 標籤 keywords description!

來源:互聯網
上載者:User

// 設定關鍵字和頁面描述

 

代碼

 1 public void setMeta(string key,string des)
 2 {
 3 
 4     HtmlMeta keywords = new HtmlMeta(), // keywords
 5 
 6             description = new HtmlMeta(); // description
 7 
 8         keywords.Name = "keywords";
 9 
10         keywords.Content = key;
11 
12         description.Name = "description";
13 
14         description.Content = des;
15 
16         Page.Header.Controls.Add(keywords);
17 
18         Page.Header.Controls.Add(description);
19 
20 }
21 
22 

 

在ASP.NET編程中,由於經常採用一個頁面通過不同的參數來顯示不同的內容,因此常常需要實現動態輸出不同的html header, 比如title, keywords, descrtptions等。

推薦的簡單做法如下:

protected void Page_Load(object sender, EventArgs e)

{

   //Page title

   Page.Title = "This is a title and meta test page.";

   //Encode/Content type

   HtmlMeta encode = new HtmlMeta();

   encode.HttpEquiv = "Content-Type";

   encode.Content = "text/html; charset=utf-8";

   Page.Header.Controls.Add(encode);

   //Language

   HtmlMeta lang = new HtmlMeta();

   lang.HttpEquiv = "Content-Language";

   lang.Content = "zh-cn";

   Page.Header.Controls.Add(lang);

   //Description

   HtmlMeta desc = new HtmlMeta();

   desc.Name = "Description";

   desc.Content = "Test the meta controls";

   Page.Header.Controls.Add(desc);

   //Keyword

   HtmlMeta keywords = new HtmlMeta();

   keywords.Name = "keywords";

   keywords.Content = "title,meta,test,page";

   Page.Header.Controls.Add(keywords);

   //Link/CSS

   HtmlLink cssLink = new HtmlLink();

   cssLink.Href = "MasterPage.css";

   cssLink.Attributes.Add("rel", "stylesheet");

   cssLink.Attributes.Add("type", "text/css");

   Page.Header.Controls.Add(cssLink);

}

瀏覽時輸出的頁面源碼便會達到如下效果:

<head><title>

This is a title and meta test page.

</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Content-Language" content="zh-cn" /><meta name="Description" content="Test the meta controls" /><<meta name="keywords" content="title,meta,test,page" /><link href="MasterPage.css" rel="stylesheet" type="text/css" /></head>

由於需要動態修改Header的Controls集合,因此如果放在使用者自訂控制項的Page_Onload事件中因為已經太遲而到處出現異常。對於希望用通用的控制項實現這一功能的場合,建議封裝一個普通的類,然後在MasterPager或者Page的Page_OnLoad中調用一下即可。

#region PAGE HEAD

        //Page meta information

        public void BackHeadContent(HtmlControl htmlCtrl)

        {

            Content(htmlCtrl, "網站後台管理系統", "~/CssStyle/SiteStyles.css");

        }

        public void HeadContent(HtmlControl htmlCtrl, string strPageTitle)

        {

            Content(htmlCtrl, strPageTitle, "~/CssStyle/Styles.css");

        }

      

        private void Content(HtmlControl htmlCtrl, string strTitle,string cssFile)

        {

            //Title

            HtmlTitle title = new HtmlTitle();

            title.Text = strTitle;

            htmlCtrl.Controls.Add(title);

            //Link/CSSfile:

            HtmlLink cssLink = new HtmlLink();

            cssLink.Href = cssFile;

            cssLink.Attributes.Add("rel", "stylesheet");

            cssLink.Attributes.Add("type", "text/css");

            htmlCtrl.Controls.Add(cssLink);

            HtmlMeta

            author = new HtmlMeta(), // author

            copyright = new HtmlMeta(), // copyright

            date = new HtmlMeta(), // date

            keywords = new HtmlMeta(), // keywords

            description = new HtmlMeta(), // description

            robots = new HtmlMeta();// robots

            author.Name = "Author";

            author.Content = "Insus.NET";

            copyright.Name = "Copyright";

            copyright.Content = "Copyright 2008 Insus.NET";

            date.Name = "date";

            date.Content = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();

            keywords.Name = "keywords";

            keywords.Content = "Insus ";

            description.Name = "description";

            robots.Name = "robots";

            robots.Content = "all";

            string[] InsusWords = "VISUAL STUDIO 2003,VISUAL STUDIO 2005,Microsoft SQL Server 2005,ASP.NET,ASP.NET 2.0,VB.NET,C#,AJAX,LINQ"

              .Replace("\\r", string.Empty)

              .Replace("\\n", string.Empty)

              .Replace("&gt;br /&gt;", string.Empty)

              .Replace(",", string.Empty)

              .Replace("\\'", string.Empty)

              .Split(' ');

            foreach (string word in InsusWords)

                keywords.Content += word + ",";

            if (keywords.Content.ToString().Length > 1024)

            {

                keywords.Content = keywords.Content.Substring(0, keywords.Content.IndexOf(" ", 1024));

            }

            description.Content = "This web site use asp.net2.0 and C# and Ajax technology";

            if (description.Content.ToString().Length > 1024)

            {

                description.Content = description.Content.Substring(0, description.Content.IndexOf(" ", 1024));

            }

            htmlCtrl.Controls.Add(author);

            htmlCtrl.Controls.Add(copyright);

            htmlCtrl.Controls.Add(date);

            htmlCtrl.Controls.Add(keywords);

            htmlCtrl.Controls.Add(description);

            htmlCtrl.Controls.Add(robots);

        }

        #endregion PAGE HEAD

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.