Как добавить заголовок и метатеги для страниц контента в проекте на основе главной страницы и страниц контента (динамически)
Как добавить заголовок и метатеги для страниц содержимого в проекте на основе главной страницы и страниц содержимого (динамически)?
Я использовал метод ниже для главной страницы:
public void SetMetaTags(string title, string description, string keywords)
{
// Get a reference to the HTML Head
HtmlHead headTag = (HtmlHead)Page.Header;
// Set the page title
headTag.Title = title;
// Add a Description meta tag
HtmlMeta metaTag = new HtmlMeta();
metaTag.Name = "Description";
metaTag.Content = description;
headTag.Controls.Add(metaTag);
// Add a Keywords meta tag
metaTag = new HtmlMeta();
metaTag.Name = "Keywords";
metaTag.Content = keywords;
headTag.Controls.Add(metaTag);
}
так что я не знаю, почему следующий код в Page_Load
страницы содержания имеет ошибку:
protected void Page_Load(object sender, EventArgs e)
{
MasterPage MyMasterPage = (MasterPage)Master;
// Error on this line:
MyMasterPage.SetMetaTags("Title", "description", "keywords");
}
и ошибка:
Error 17 'System.Web.UI.MasterPage' does not contain a definition for
'SetMetaTags' and no extension method 'SetMetaTags' accepting a first argument of
type 'System.Web.UI.MasterPage' could be found (are you missing a using directive
or an assembly reference?)
C:\Javad\---\AlmasAfzar\AlmasAfzar\AlmasAfzar\Products.aspx.cs 16 26
AlmasAfzar
Спасибо в будущем заранее
с уважением
3 ответа
Вам необходимо привести тип, возвращенный из Page.Master, к типу вашей главной страницы, а не к System.Web.UI.MasterPage.
Итак, если ваш класс главной страницы с методом SetMetaTags называется MasterWithMetaTags, ваш код Page_Load должен выглядеть следующим образом:
protected void Page_Load(object sender, EventArgs e)
{
MasterWithMetaTags MyMasterPage = (MasterWithMetaTags)Master;
MyMasterPage.SetMetaTags("Title", "description", "keywords");
}
Без какого-либо упоминания о том, что это за ошибка, я могу сказать только то, что вы сказали. Я хотел бы убедиться, что у вас есть эта директива в вашем файле aspx:
<%@ MasterType VirtualPath="PathToYourMasterFile" %>
Вы можете просто использовать Page.Header.Title для заголовка страницы. Вот мой.
#region meta tags and title
Page.Header.Title = dtArticleDetails.Rows[0]["title"].ToString();
string Keywords = dtArticleDetails.Rows[0]["keywords"].ToString();
string Description = dtArticleDetails.Rows[0]["description"].ToString();
HtmlMeta keywordss = new HtmlMeta();
HtmlHead head = (HtmlHead)Page.Header;
keywordss.Name = "keywords";
keywordss.Content = Keywords;
head.Controls.Add(keywordss);
HtmlMeta desc = new HtmlMeta();
desc.Name = "description";
desc.Content = Description;
HtmlHead head2 = (HtmlHead)Page.Header;
head2.Controls.Add(desc);
#endregion