Tworzenie ograniczenia trasy (VB)
W tym samouczku Stephen Walther pokazuje, jak można kontrolować sposób dopasowywania żądań przeglądarki przez tworzenie ograniczeń trasy za pomocą wyrażeń regularnych.
Ograniczenia trasy umożliwiają ograniczenie żądań przeglądarki pasujących do określonej trasy. Możesz użyć wyrażenia regularnego, aby określić ograniczenie trasy.
Załóżmy na przykład, że zdefiniowano trasę w pliku Global.asax na liście 1.
Lista 1 — Global.asax.vb
routes.MapRoute( _
"Product", _
"Product/{productId}", _
New With {.controller = "Product", .action = "Details"} _
)
Lista 1 zawiera trasę o nazwie Product. Za pomocą trasy Product można mapować żądania przeglądarki na productController zawarte w liście 2.
Lista 2 — Controllers\ProductController.vb
Public Class ProductController
Inherits System.Web.Mvc.Controller
Function Details(ByVal productId As Integer) As ActionResult
Return View()
End Function
End Class
Zwróć uwagę, że akcja Details() uwidoczniona przez kontroler produktu akceptuje pojedynczy parametr o nazwie productId. Ten parametr jest parametrem całkowitym.
Trasa zdefiniowana na liście 1 będzie zgodna z dowolnym z następujących adresów URL:
- /Product/23
- /Product/7
Niestety trasa będzie również zgodna z następującymi adresami URL:
- /Produkt/bla
- /Product/apple
Ponieważ akcja Details() oczekuje parametru liczby całkowitej, wykonanie żądania zawierającego coś innego niż wartość całkowita spowoduje błąd. Jeśli na przykład wpiszesz adres URL /Product/apple w przeglądarce, zostanie wyświetlona strona błędu na rysunku 1.
Rysunek 01. Wyświetlanie eksplodowania strony (kliknij, aby wyświetlić obraz pełnowymiarowy)
To, co naprawdę chcesz zrobić, to dopasowanie tylko adresów URL zawierających właściwą liczbę całkowitą productId. Ograniczenie można użyć podczas definiowania trasy w celu ograniczenia adresów URL pasujących do trasy. Zmodyfikowana trasa produktu na liście 3 zawiera ograniczenie wyrażenia regularnego, które pasuje tylko do liczb całkowitych.
Lista 3 — Global.asax.vb
routes.MapRoute( _
"Product", _
"Product/{productId}", _
New With {.controller = "Product", .action = "Details"}, _
New With {.productId = "\d+"} _
)
Wyrażenie regularne \d+ pasuje do co najmniej jednej liczby całkowitej. To ograniczenie powoduje, że trasa Produktu jest zgodna z następującymi adresami URL:
- /Product/3
- /Product/8999
Ale nie następujące adresy URL:
- /Product/apple
- /Produktu
Te żądania przeglądarki będą obsługiwane przez inną trasę lub, jeśli nie ma pasujących tras, zostanie zwrócony błąd Nie można odnaleźć zasobu .
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla