2011-05-07 71 views
1

在母版页后面的代码,我创建meta标签:从母版页覆盖Meta标签与内容页面的meta标签

HtmlMeta _metaDescription = new HtmlMeta(); 
    _metaDescription.Name = "description"; 
    _metaDescription.Content = "this is the description"; 
    _metaDescription.ID = "metaD"; 
    this.Page.Header.Controls.Add(_metaDescription); 

    HtmlMeta _metaKeywordsMaster = new HtmlMeta(); 
    _metaKeywordsMaster.Name = "keywords"; 
    _metaKeywordsMaster.Content = "here are the keywords" ; 
    _metaDescription.ID = "metaK"; 
    this.Page.Header.Controls.Add(_metaKeywordsMaster); 


    HtmlMeta _metaTitleMaster = new HtmlMeta(); 
    _metaTitleMaster.Name = "title"; 
    _metaTitleMaster.Content = "TitlePage"; 
    _metaDescription.ID = "metaT"; 
    this.Page.Header.Controls.Add(_metaTitleMaster); 

如果我输入一个特定的contentpage我想通过去除覆盖这些元每日新闻他们和创建新的中继标记

 HtmlMeta meta = (HtmlMeta)this.Header.FindControl("ctl00metaT"); 
     this.Header.Controls.Remove(meta); 


      HtmlMeta _metaDescription = new HtmlMeta(); 
      _metaDescription.Name = "description"; 
      _metaDescription.Content = "NewDescription"; 
      base.Master.Page.Header.Controls.Add(_metaDescription); 
      //this.Page.Controls.Add(_metaDescription); 

      HtmlMeta _metaKeywords = new HtmlMeta(); 
      _metaKeywords.Name = "keywords"; 
      _metaKeywords.Content = "NewKeywords"; 
      base.Master.Page.Controls.Add(_metaKeywords); 
      //this.Page.Controls.Add(_metaKeywords); 

      HtmlMeta _metaTitle = new HtmlMeta(); 
      _metaTitle.Name = "title"; 
      _metaTitle.Content = "NewTitle"; 
      base.Master.Page.Controls.Add(_metaTitle);      

但它并没有删除旧的标签,我得到双重标签,而是我做错了什么?

回答

0

按照以下步骤

1.创建为母版页基页类,并把属性,如下面

public class MasterBasePage : System.Web.UI.MasterPage 
     { 

      private string _pageTitle; 

      private string _pageDescription; 
      public string PageTitle 
      { 
       get { return _pageTitle; } 
       set { _pageTitle = value; } 
      } 

      public string PageDescription 
      { 
       get { return _pageDescription; } 
       set { _pageDescription = value; } 
      } 

      protected override void OnLoad(EventArgs e) 
      { 
       if (string.IsNullOrEmpty(PageTitle)) 
       { 
        _pageTitle = this.Page.Title; 
       } 
       _pageDescription = "Select from config file"; 
       this.Page.Title = "Page Title"; 
       HtmlMeta metaTag = new HtmlMeta(); 
       metaTag.Name = "Description"; 
       metaTag.Content = _pageDescription; 
       Page.Header.Controls.Add(metaTag); 

       base.OnLoad(e); 
      } 
     } 


2.Inherit从BasePage的

你的母版页类
public partial class SiteMaster : MasterBasePage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 

3.在内容页面添加以下属性(用您自己的替换site.master)

<%@ MasterType VirtualPath="~/Site.master" %> 
  1. 覆盖在所述内容页如下

    主页基性质保护无效的Page_Load(对象发件人,EventArgs的) { Master.PageTitle = “页”; Master.PageDescription =“sadada”; }

1

为了覆盖meta标签,你应该写上的负载下面的代码页面

((System.Web.UI.HtmlControls.HtmlMeta)Page.Header.Controls[0]).Content = "IE=edge"; 

当然,您需要确保找到控件的正确索引。