Добавление META тегов на ASP.NET страницу

Для лучшего SEO (Search Engine Optimisation) рекомендуется название статьи помещать и добавлять Meta keywords и Meta description

В ASP 3 и PHP все просто: , а в .Net, к сожалению, так сделать нельзя! Зато, можно сделать по-другому :-)

В ASP.NET странице указываем:

<head runat="server">

</head>

Теперь из кода можно установить Title нашей Asp.Net страницы вот так:

this.Page.Title = "My title";

a любые Meta-теги добавлять так:

private void AddMetaTag(string name, string content)
{
// Эта функция создает новый объект HtmlMeta, устанавливает его свойства,
//и добавляет его в Page.Header.Controls 

HtmlMeta meta = new HtmlMeta();
meta.Name = name;
meta.Content = content;

// Добавляем контрол в HTML

Page.Header.Controls.Add(meta);
}

AddMetaTag("keywords", "слова, слова, слова");
AddMetaTag("description", "короткое описание статьи");

Эти мета-теги попадут в сгенерированой HTML страницы.

Leave a comment

6 Comments

  1. Здравствуйте!
    Подскажите, этот пример будет работать в .NET Framework 1.1 или только в 2.0?

    Ответить
  2. На 1.1 не пробовал, но думаю, будет =)

    Ответить
  3. Metla2

     /  28.10.2008

    Адель, очень прошу, выкрои из своего драгоценного времени 30 минут и покажи реальный пример, как выдёргивать теги (дискрипшн и кейворд) из базы (в зависимости от того, какая страница открыта).
    Т.е. изначально, я в админке создал новую статью, и в поле "Кейвордс" – написал ключевики, "Дискрипшн" – описание страницы, "Титл" – название статьи. Потом благополучно сохранил это в базу.
    Теперь, я вывожу список статей с анонсами с помощью TableAdapter, когда пользователь счёлкает по статье, то переходит в карточку статьи (параметр передаётся встроеными средствами, через id={0}, это если использовать даталист). А как передать этот параметр, чтобы выдернуть из базы Титл и др. тэги для этой статьи?
    Пожалуйста, освети!!! И чем бысрее тем …. будет всем :-).

    Ответить
  4. [b]Metla2[/b], озадачили Вы меня с TableAdapter-ом :-)

    Я делаю довольно очень просто: при переходе на страницу открывается /art.aspx?id=123456 (id – уникальный идентификатор статьи)

    а дальше:
    int intID = Convert.ToInt32(Request.QueryString["id"]);
    this.Page.Title = GetArticleName(intID);
    AddMetaTag("keywords", GetKeyWords(intID);
    AddMetaTag("description", GetArticleDescr(intID));

    string GetKeyWords(int intArtID)
    {
    SqlConnection SQLDB;
    SqlCommand SQLDBCMD;
    SqlDataReader SqlR;

    string strResult="";

    SQLDB = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SQLDBCMD = new SqlCommand("SELECT id_article, article_keywords FROM articles WHERE id_article =’" + intArtID + "’", SQLDB);
    SQLDB.Open();
    SqlR = SQLDBCMD.ExecuteReader();

    while (SqlR.Read())
    {
    strResult = SqlR["article_keywords"].ToString();

    }

    SqlR.Close();
    SQLDB.Close();

    return strResult;
    }

    string GetArticleName(int intArtID)
    {
    SqlConnection SQLDB;
    SqlCommand SQLDBCMD;
    SqlDataReader SqlR;

    string strResult="";

    SQLDB = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SQLDBCMD = new SqlCommand("SELECT id_article, article_name FROM articles WHERE id_article =’" + intArtID + "’", SQLDB);
    SQLDB.Open();
    SqlR = SQLDBCMD.ExecuteReader();

    while (SqlR.Read())
    {
    strResult = SqlR["article_name"].ToString();

    }

    SqlR.Close();
    SQLDB.Close();

    return strResult;
    }

    string GetArticleDescr(int intArtID)
    {
    SqlConnection SQLDB;
    SqlCommand SQLDBCMD;
    SqlDataReader SqlR;

    string strResult="";

    SQLDB = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
    SQLDBCMD = new SqlCommand("SELECT id_article, article_desc FROM articles WHERE id_article =’" + intArtID + "’", SQLDB);
    SQLDB.Open();
    SqlR = SQLDBCMD.ExecuteReader();

    while (SqlR.Read())
    {
    strResult = SqlR["article_desc"].ToString();

    }

    SqlR.Close();
    SQLDB.Close();

    return strResult;
    }

    Если тут неудобно читать, могу на емейл отправить )

    Ответить
  5. metla2

     /  30.10.2008

    ОООО, спасибо тебе большое. Читать конечно не очень, но ничего, и так нормально, а если есть возможность скинь проект или что у тебя на почту. Спасибо тебе ещё раз!!!

    Ответить
  6. г-н Тараканофф

     /  09.01.2010

    "В ASP 3 и PHP все просто: <title><%= strPageTitle %> </title>, а в .Net, к сожалению ))) так сделать нельзя!"
    – я именно так и делаю. Либо объявляю в классе страницы глобальную (public) переменную strPageTitle и устанавливаю её значение, либо делаю так: <title><% = (string)Context.Items["PAGE_TITLE"] %></title>, а в классе страницы устанавливаю Context.Items["PAGE_TITLE"] = "Заголовок". Такой способ для тех, кто не любит WebForms.

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>