Как добавить заголовок и метатеги для страниц контента в проекте на основе главной страницы и страниц контента (динамически) - PullRequest
0 голосов
/ 17 октября 2010

Как добавить заголовок и метатеги для страниц контента в проекте на основе главной страницы и страниц контента (динамически)?

Я использовал следующий метод для главной страницы:

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 ]

1 голос
/ 17 октября 2010

Вам необходимо привести тип, возвращенный из 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"); 
}
0 голосов
/ 18 октября 2010

Вы можете просто использовать 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
0 голосов
/ 17 октября 2010

Без какого-либо упоминания о том, что это за ошибка, я могу сказать только то, что вы сказали.Я хотел бы убедиться, что у вас есть эта директива в вашем файле aspx:

<%@ MasterType VirtualPath="PathToYourMasterFile" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...