Rose debug info
---------------

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

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

В ASP 3 и PHP все просто: <%= strPageTitle %> , а в .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 страницы.

 203   2008  
6 комментариев
Kosten 2008

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

DrFaust 2008

На 1.1 не пробовал, но думаю, будет =)

Metla2 2008

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

DrFaust 2008

[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;
}

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

metla2 2008

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

г-н Тараканофф 2010

"В ASP 3 и PHP все просто: <title><%= strPageTitle %> </title>, а в .Net, к сожалению ))) так сделать нельзя!"

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