Tworzenie czytelnych adresów URL w witrynach ASP.NET Web Pages (Razor)
– autor Tom FitzMacken
W tym artykule opisano routing w witrynie internetowej ASP.NET Web Pages (Razor) oraz sposób, w jaki umożliwia to korzystanie z adresów URL, które są bardziej czytelne i lepsze dla funkcji optymalizacji wyszukiwania.
Zawartość:
- Jak ASP.NET używa routingu, aby umożliwić korzystanie z bardziej czytelnych i z możliwością wyszukiwania adresów URL.
Wersje oprogramowania używane w samouczku
- ASP.NET Web Pages (Razor) 3
Ten samouczek działa również z ASP.NET Web Pages 2.
Informacje o routingu
Adresy URL stron w witrynie mogą mieć wpływ na to, jak dobrze działa witryna. Adres URL , który jest "przyjazny", może ułatwić użytkownikom korzystanie z witryny. Może również pomóc w optymalizacji aparatu wyszukiwania (SEO) dla witryny. ASP.NET witryny internetowe obejmują możliwość automatycznego używania przyjaznych adresów URL.
ASP.NET umożliwia tworzenie znaczących adresów URL opisujących akcje użytkownika zamiast wskazywania pliku na serwerze. Rozważ następujące adresy URL dla fikcyjnego bloga:
http://www.contoso.com/Blog/blog.cshtml?categories=hardware
http://www.contoso.com//Blog/blog.cshtml?startdate=2009-11-01&enddate=2009-11-30
Porównaj te adresy URL z następującymi:
http://www.contoso.com/Blog/categories/hardware/
http://www.contoso.com/Blog/2009/November
W pierwszej parze użytkownik musiałby wiedzieć, że blog jest wyświetlany przy użyciu strony blog.cshtml , a następnie musi utworzyć ciąg zapytania, który pobiera odpowiednią kategorię lub zakres dat. Drugi zestaw przykładów jest znacznie łatwiejszy do zrozumienia i utworzenia.
Adresy URL pierwszego przykładu wskazują również bezpośrednio na określony plik (blog.cshtml). Jeśli z jakiegoś powodu blog został przeniesiony do innego folderu na serwerze lub jeśli blog został przepisany, aby użyć innej strony, linki byłyby błędne. Drugi zestaw adresów URL nie wskazuje określonej strony, więc nawet jeśli implementacja bloga lub lokalizacja ulegnie zmianie, adresy URL będą nadal prawidłowe.
W ASP.NET stron sieci Web można tworzyć bardziej przyjazne adresy URL, takie jak te w powyższych przykładach, ponieważ ASP.NET używa routingu. Routing tworzy mapowanie logiczne na podstawie adresu URL do strony (lub stron), która może spełnić żądanie. Ponieważ mapowanie jest logiczne (nie fizyczne, do określonego pliku), routing zapewnia dużą elastyczność w sposobie definiowania adresów URL dla witryny.
Jak działa routing
Gdy ASP.NET przetwarza żądanie, odczytuje adres URL w celu określenia sposobu kierowania żądania. ASP.NET próbuje dopasować poszczególne segmenty adresu URL do plików na dysku, przechodząc od lewej do prawej. Jeśli istnieje dopasowanie, wszystkie pozostałe elementy w adresie URL są przekazywane do strony jako informacje o ścieżce.
Załóżmy, że ktoś wysyła żądanie przy użyciu tego adresu URL:
http://www.contoso.com/a/b/c
Wyszukiwanie wygląda następująco:
- Czy istnieje plik ze ścieżką i nazwą /a/b/c.cshtml? Jeśli tak, uruchom stronę i nie przekaż do niej żadnych informacji. W innym przypadku...
- Czy istnieje plik ze ścieżką i nazwą /a/b.cshtml? Jeśli tak, uruchom ją i przekaż do niej wartość
c
. Inaczej... - Czy istnieje plik ze ścieżką i nazwą /a.cshtml? Jeśli tak, uruchom ją i przekaż do niej wartość
b/c
.
Jeśli wyszukiwanie nie odnalazło dokładnych dopasowań plików cshtml w określonych folderach, ASP.NET nadal szuka tych plików z kolei:
- /a/b/c/default.cshtml (brak informacji o ścieżce).
- /a/b/c/index.cshtml (brak informacji o ścieżce).
Uwaga
Aby było jasne, żądania dotyczące określonych stron (czyli żądań zawierających rozszerzenie nazwy pliku cshtml ) działają podobnie jak oczekiwano. Żądanie podobne http://www.contoso.com/a/b.cshtml
do tego spowoduje uruchomienie strony b.cshtml .
Wewnątrz strony można uzyskać informacje o ścieżce za pomocą właściwości strony UrlData
, która jest słownikiem. Załóżmy, że masz plik o nazwie ViewCustomers.cshtml , a witryna otrzymuje następujące żądanie:
http://mysite.com/myWebSite/ViewCustomers/1000
Zgodnie z powyższym opisem w powyższych regułach żądanie przejdzie do strony. Na stronie możesz użyć kodu podobnego do poniższego, aby pobrać i wyświetlić informacje o ścieżce (w tym przypadku wartość "1000"):
<!DOCTYPE html>
<html>
<head>
<title>URLData</title>
</head>
<body>
Customer ID: @UrlData[0].ToString()
</body>
</html>
Uwaga
Ponieważ routing nie obejmuje pełnych nazw plików, może istnieć niejednoznaczność, jeśli masz strony o tej samej nazwie, ale inne rozszerzenia nazw plików (na przykład MyPage.cshtml i MyPage.html). Aby uniknąć problemów z routingiem, najlepiej upewnić się, że nie masz stron w witrynie, których nazwy różnią się tylko ich rozszerzeniem.
Dodatkowe zasoby
WebMatrix — adresy URL, adresy URLData i routing dla funkcji SEO. Ten wpis w blogu Mike Brind zawiera dodatkowe informacje na temat sposobu działania routingu w ASP.NET Web Pages.