#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:
Вот действительно простое решение, оно идеально подходит для меня:
Комментарии:
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" %>
-
Переопределите базовые свойства главной страницы на странице содержимого, как показано ниже
защищенная пустая страница_загрузки (отправитель объекта, EventArgs e) { Master.PageTitle = «Страница»; Master.PageDescription = «sadada»; }