Перезаписать мета-теги с главной страницы метатегами страницы содержимого

#c# #meta-tags

#c# #мета-теги

Вопрос:

В коде главной страницы я создаю мета-теги:

    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);
  

Если я ввожу определенную страницу содержимого, я хочу перезаписать эти мета-теги, удалив их и создав новые мета-теги

         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);                     
  

Но это не удаляет старые теги, вместо этого я получаю двойные теги, что я делаю не так???

Ответ №1:

Чтобы перезаписать мета-тег, вы должны написать приведенный ниже код при загрузке страницы

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

Конечно, вы должны быть уверены, что нашли правильный индекс элемента управления.

Ответ №2:

Вот действительно простое решение, оно идеально подходит для меня:

https://web.archive.org/web/20170812001633/http://lionfishtechnologies.com/developers/tips/c-sharp_add_meta_keywords_description_to_master_page.html

Комментарии:

1. Эта страница больше не существует. Я бы хотел посмотреть, каков ответ. У меня возникла эта проблема 3 года спустя!

Ответ №3:

Выполните следующие действия

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. Унаследуйте свой класс главной страницы от базовой страницы

 public partial class SiteMaster : MasterBasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
  

3.In на странице содержимого добавьте следующий атрибут (замените site.master своим собственным)

 <%@ MasterType VirtualPath="~/Site.master" %>
  
  1. Переопределите базовые свойства главной страницы на странице содержимого, как показано ниже

    защищенная пустая страница_загрузки (отправитель объекта, EventArgs e) { Master.PageTitle = «Страница»; Master.PageDescription = «sadada»; }