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?