DevTrain

Autor: Hannes Preishuber

Metatags während der Laufzeit in ASP .net setzen

Metatags liefern zusätzliche Information über die Webpage. Dies kann an den User adressiert sein oder an andere Software wie Suchmaschinen zu weiteren Verarbeitung. Metatags lassen sich leider nachträglich nicht setzen.

Mit ASP .net und einigen Umwegen lässt sich aber doch Einfluss auf die Metatags und deren Inhalt nehmen.

Um zu zeigen wovon wir reden vorerst ein Auszug aus www.devtrain.de

<html>
<head>
<link rel="stylesheet" type="text/css" href='/design/stylesheets/intranaut.css'>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="content-language" content="de">
<META NAME="Title" CONTENT="Devtrain Der Werkzeugkasten für Entwickler">
<META NAME="Author" CONTENT="ppedv ag Burghausen">
<META NAME="Revisit" CONTENT="After 3 days">
<meta name="revisit-after" content="3 days">
<META NAME="Keywords" CONTENT="ASP, VB, ...Backoffice">
<META NAME="Description" CONTENT="Täglich aktuelle Tipps, Tricks, Beiträge, Artikel zu Web Entwicklung. Themen rund um XML, ASP und DOT NET">
<META NAME="page-topic" CONTENT="Software">
<meta NAME="robots" CONTENT="INDEX,FOLLOW">
usw.

Der erster Lösungsansatz verwendet ein einfaches Response.write.
<HEAD><title>
<%="Devtrain Der Werkzeugkasten für Entwickler"%>
</title>
<%response.write("<META NAME='Description' CONTENT='Devtrain Der Werkzeugkasten für Entwickler'>")%>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

Dies erzeugt im Browser das gewünschte Resultat, bewegt sich aber absolut ausserhalb jeder Idee von .NET.

Metatest1

Nun sehen wir also wie wir den Titeltag dynamisch füllen können. Dazu nehmen wir eine Variable. Gleichzeitig bekommt die Pageklasse diese Variable als Public Proberty. Dieses Proberty kann dann in Page Load gefüllt werden.

<HEAD><title><%=variable%>
.....
Codebehind

Public Class metatest
    Inherits System.Web.UI.Page
    Public variable As String

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        variable = Date.Now.TimeOfDay.ToString
    End Sub
End Class


Der Autor hat in einem Newsbeitrag auch noch eine andere Möglichkeit gefunden. Diese wird hier auch noch erläutert.

Dazu musst zuerst in der Codebehind class ein protected Field zb. mit dem Namen Kopf vom Type HtmlGenericControl erstellt werden.

Protected Kopf As HtmlGenericControl

In der ASPX Datei, muss dann dem Head Tag der Page die ID Kopf geben und runat="server" setzen.

In der Page_Load Methode kann dann  der Meta Tag erstellt werden. Dieser wird dann der
Controls collection des Kopf Objektes hinzugefügt.

<HEAD id="Kopf" runat=server>
....

codebehind
Public Class metatest
    Inherits System.Web.UI.Page
    Protected Kopf As HtmlGenericControl
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim myTag As HtmlGenericControl = New HtmlGenericControl("meta")
        myTag.Attributes.Add("name", "Author")
        myTag.Attributes.Add("content", "Hannes Preishuber, ppedv ag")
        Kopf.Controls.Add(myTag)       
    End Sub
End Class

Allerdings können nicht beide Methoden gleichzeitig verwendet werden. Die zweite Methode erfordert mehr Code, ist allerdings objektorientiert. Und das ist doch Cool oder?

 

 

 

 


 


Erfasst am: 05.06.2002 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=774
© Copyright 2003 ppedv AG - http://www.ppedv.de