设置Title :
this .Header.Title="这是个Title测试" ;
如果用了MasterPage可以这样用:
this .Page.Title = SiteMap.CurrentNode.Title;
动态设置Style:
Style style = new Style(); style.ForeColor = System.Drawing.Color.Navy; style.BackColor = System.Drawing.Color.LightGray; this .Header.StyleSheet.CreateStyleRule(style, null , "body" );
动态加样式表:
HtmlLink link = new HtmlLink(); link.Attributes.Add("type" , "text/css" ); link.Attributes.Add("rel" , "stylesheet" ); link.Attributes.Add("href" , "~/newstyle.css" ); this .Header.Controls.Add(link);
动态加meta tags :
HtmlMeta meta = new HtmlMeta(); meta.Name = "keywords" ; meta.Content = "Some words listed here" ; this .Header.Controls.Add(meta);meta = new HtmlMeta(); meta.Name = "robots" ; meta.Content = "noindex" ; this .Header.Controls.Add(meta);meta = new HtmlMeta(); meta.Name = "date" ; meta.Content = DateTime.Now.ToString("yyyy-MM-dd" ); meta.Scheme = "YYYY-MM-DD" ; this .Header.Controls.Add(meta);
---------------------------------------------------------------------------------------------
ASP.NET 如何动态修改 Header 属性如添加 Meta 标签 keywords description
2008年03月24日 星期一 10:59
public void setMeta(string key,string des) { HtmlMeta keywords = new HtmlMeta(), description = new HtmlMeta(); keywords.Name = "keywords" ; keywords.Content = key; description.Name = "description" ; description.Content = des; Page.Header.Controls.Add(keywords); Page.Header.Controls.Add(description); }
在ASP.NET编程中,由于经常采用一个页面通过不同的参数来显示不同的内容,因此常常需要实现动态输出不同的html header, 比如title, keywords, descrtptions等。
推荐的简单做法如下:
protected void Page_Load(object sender, EventArgs e){ Page.Title = "This is a title and meta test page." ; HtmlMeta encode = new HtmlMeta(); encode.HttpEquiv = "Content-Type" ; encode.Content = "text/html; charset=utf-8" ; Page.Header.Controls.Add(encode); HtmlMeta lang = new HtmlMeta(); lang.HttpEquiv = "Content-Language" ; lang.Content = "zh-cn" ; Page.Header.Controls.Add(lang); HtmlMeta desc = new HtmlMeta(); desc.Name = "Description" ; desc.Content = "Test the meta controls" ; Page.Header.Controls.Add(desc); HtmlMeta keywords = new HtmlMeta(); keywords.Name = "keywords" ; keywords.Content = "title,meta,test,page" ; Page.Header.Controls.Add(keywords); 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 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) { HtmlTitle title = new HtmlTitle(); title.Text = strTitle; htmlCtrl.Controls.Add(title); 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(), copyright = new HtmlMeta(), date = new HtmlMeta(), keywords = new HtmlMeta(), description = new HtmlMeta(), robots = new HtmlMeta(); 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(">br />" , 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