Share via


Erstellen lesbarer URLs auf ASP.NET Web Pages Websites (Razor)

von Tom FitzMacken

In diesem Artikel wird das Routing auf einer ASP.NET Web Pages-Website (Razor) beschrieben, und wie Sie dadurch URLs verwenden können, die lesbarer und für SEO besser sind.

Sie lernen Folgendes:

  • Wie ASP.NET Routing verwendet, damit Sie besser lesbare und durchsuchbare URLs verwenden können.

Im Tutorial verwendete Softwareversionen

  • ASP.NET Web Pages (Razor) 3

Dieses Tutorial funktioniert auch mit ASP.NET Web Pages 2.

Informationen zum Routing

Die URLs für die Seiten auf Ihrer Website können sich auf die Funktionsweise der Website auswirken. Eine URL, die "freundlich" ist, kann es für Benutzer einfacher machen, die Website zu verwenden. Es kann auch bei der Suchmaschinenoptimierung (SEO) für die Website helfen. ASP.NET Websites enthalten die Möglichkeit, benutzerfreundliche URLs automatisch zu verwenden.

ASP.NET können Sie aussagekräftige URLs erstellen, die Benutzeraktionen beschreiben, anstatt nur auf eine Datei auf dem Server zu zeigen. Betrachten Sie die folgenden URLs für einen fiktiven Blog:

  • http://www.contoso.com/Blog/blog.cshtml?categories=hardware
  • http://www.contoso.com//Blog/blog.cshtml?startdate=2009-11-01&enddate=2009-11-30

Vergleichen Sie diese URLs mit den folgenden:

  • http://www.contoso.com/Blog/categories/hardware/
  • http://www.contoso.com/Blog/2009/November

Im ersten Paar muss ein Benutzer wissen, dass der Blog mithilfe der Seite blog.cshtml angezeigt wird, und dann eine Abfragezeichenfolge erstellen muss, die die richtige Kategorie oder den richtigen Datumsbereich erhält. Der zweite Satz von Beispielen ist viel einfacher zu verstehen und zu erstellen.

Die URLs für das erste Beispiel zeigen auch direkt auf eine bestimmte Datei (blog.cshtml). Wenn der Blog aus irgendeinem Grund in einen anderen Ordner auf dem Server verschoben oder der Blog so umgeschrieben wurde, dass er eine andere Seite verwendet, sind die Links falsch. Der zweite Satz von URLs verweist nicht auf eine bestimmte Seite. Selbst wenn sich die Blogimplementierung oder der Speicherort ändert, sind die URLs weiterhin gültig.

In ASP.NET Web Pages können Sie freundlichere URLs wie in den obigen Beispielen erstellen, da ASP.NET Routing verwendet. Durch das Routing wird eine logische Zuordnung von einer URL zu einer Seite (oder Seiten) erstellt, die die Anforderung erfüllen kann. Da die Zuordnung logisch (nicht physisch, zu einer bestimmten Datei) ist, bietet das Routing eine große Flexibilität beim Definieren der URLs für Ihre Website.

Funktionsweise des Routings

Wenn ASP.NET eine Anforderung verarbeitet, liest sie die URL, um zu bestimmen, wie sie weitergeleitet werden soll. ASP.NET versucht, einzelne Segmente der URL mit Dateien auf dem Datenträger abzugleichen und von links nach rechts zu wechseln. Wenn es eine Übereinstimmung gibt, wird alles, was in der URL verbleibt, als Pfadinformationen an die Seite übergeben.

Stellen Sie sich vor, jemand stellt eine Anforderung mit dieser URL:

http://www.contoso.com/a/b/c

Die Suche verläuft wie folgt:

  1. Gibt es eine Datei mit dem Pfad und Namen von /a/b/c.cshtml? Wenn ja, führen Sie diese Seite aus, und übergeben Sie keine Informationen an sie. Andernfalls...
  2. Gibt es eine Datei mit dem Pfad und Namen von /a/b.cshtml? Wenn ja, führen Sie diese Seite aus, und übergeben Sie den Wert c an sie. Andernfalls...
  3. Gibt es eine Datei mit dem Pfad und Namen von /a.cshtml? Wenn ja, führen Sie diese Seite aus, und übergeben Sie den Wert b/c an sie.

Wenn die Suche keine genauen Übereinstimmungen für CSHTML-Dateien in den angegebenen Ordnern gefunden hat, ASP.NET wiederum nach diesen Dateien suchen:

  1. /a/b/c/default.cshtml (keine Pfadinformationen).
  2. /a/b/c/index.cshtml (keine Pfadinformationen).

Hinweis

Um klar zu sein, funktionieren Anforderungen für bestimmte Seiten (d. h. Anforderungen, die die Dateinamenerweiterung CSHTML enthalten) genau so, wie Sie es erwarten würden. Eine Anforderung wie http://www.contoso.com/a/b.cshtml führt die Seite b.cshtml in Ordnung.

Innerhalb einer Seite können Sie die Pfadinformationen über die Eigenschaft der Seite abrufen, bei der es UrlData sich um ein Wörterbuch handelt. Stellen Sie sich vor, Sie haben eine Datei mit dem Namen ViewCustomers.cshtml und Ihre Website erhält die folgende Anforderung:

http://mysite.com/myWebSite/ViewCustomers/1000

Wie in den obigen Regeln beschrieben, wird die Anforderung auf Ihre Seite weitergeleitet. Auf der Seite können Sie Code wie den folgenden verwenden, um die Pfadinformationen abzurufen und anzuzeigen (in diesem Fall der Wert "1000"):

<!DOCTYPE html>
<html>
    <head>
        <title>URLData</title>
    </head>
    <body>
      Customer ID: @UrlData[0].ToString()
    </body>
</html>

Hinweis

Da das Routing keine vollständigen Dateinamen umfasst, kann es Mehrdeutigkeiten geben, wenn Sie Seiten mit dem gleichen Namen, aber unterschiedlichen Dateinamenerweiterungen haben (z . B. MyPage.cshtml und MyPage.html). Um Probleme beim Routing zu vermeiden, sollten Sie sicherstellen, dass Sie keine Seiten auf Ihrer Website haben, deren Namen sich nur in ihrer Erweiterung unterscheiden.

Zusätzliche Ressourcen

WebMatrix : URLs, UrlData und Routing für SEO. Dieser Blogeintrag von Mike Brind enthält einige zusätzliche Details zur Funktionsweise des Routings in ASP.NET Web Pages.