Tworzenie tras niestandardowych (VB)

autor: Microsoft

Dowiedz się, jak dodać trasy niestandardowe do aplikacji ASP.NET MVC. Z tego samouczka dowiesz się, jak zmodyfikować domyślną tabelę tras w pliku Global.asax.

Z tego samouczka dowiesz się, jak dodać trasę niestandardową do aplikacji MVC ASP.NET. Dowiesz się, jak zmodyfikować domyślną tabelę tras w pliku Global.asax przy użyciu trasy niestandardowej.

W ASP.NET aplikacjach MVC domyślna tabela tras będzie działać prawidłowo. Jednak możesz odkryć, że masz wyspecjalizowane potrzeby routingu. W takim przypadku możesz utworzyć trasę niestandardową.

Załóżmy na przykład, że tworzysz aplikację w blogu. Może być konieczne obsłużenie żądań przychodzących, które wyglądają następująco:

/Archive/12-25-2009

Gdy użytkownik wprowadzi to żądanie, chcesz zwrócić wpis w blogu odpowiadający dacie 12.25.2009. Aby obsłużyć ten typ żądania, należy utworzyć trasę niestandardową.

Plik Global.asax na liście 1 zawiera nową trasę niestandardową o nazwie Blog, która obsługuje żądania, które wyglądają jak /Archive/entry date.

Lista 1 — Global.asax (z trasą niestandardową)

Public Class MvcApplication
    Inherits System.Web.HttpApplication
    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
        ' MapRoute takes the following parameters, in order:
        ' (1) Route name
        ' (2) URL with parameters
        ' (3) Parameter defaults
        routes.MapRoute( _
            "Blog", _
            "Archive/{entryDate}", _
            New With {.controller = "Archive", .action = "Entry"} _
        )
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )
    End Sub
    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

Kolejność tras dodanych do tabeli tras jest ważna. Nasza nowa niestandardowa trasa bloga jest dodawana przed istniejącą trasą domyślną. W przypadku odwrócenia kolejności trasa domyślna zawsze będzie wywoływana zamiast trasy niestandardowej.

Niestandardowa trasa bloga jest zgodna z dowolnym żądaniem rozpoczynającym się od /Archive/. W związku z tym jest on zgodny ze wszystkimi następującymi adresami URL:

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

Trasa niestandardowa mapuje żądanie przychodzące na kontroler o nazwie Archiwum i wywołuje akcję Entry(). Po wywołaniu metody Entry() data wejścia jest przekazywana jako parametr o nazwie entryDate.

Możesz użyć trasy niestandardowej bloga z kontrolerem w liście 2.

Lista 2 — ArchiveController.vb

Public Class ArchiveController
    Inherits System.Web.Mvc.Controller
    Function Entry(ByVal entryDate As DateTime)
        Return "You requested the entry from " & entryDate.ToString()
    End Function
End Class

Zwróć uwagę, że metoda Entry() w pozycji Listing 2 akceptuje parametr typu DateTime. Struktura MVC jest wystarczająco inteligentna, aby automatycznie przekonwertować datę wejścia z adresu URL na wartość DateTime. Jeśli nie można przekonwertować parametru daty wejścia z adresu URL na wartość DateTime, zostanie zgłoszony błąd (zobacz Rysunek 1).

Rysunek 1. Błąd podczas konwertowania parametru

Okno dialogowe Nowy projekt

Rysunek 01. Błąd podczas konwertowania parametru (kliknij, aby wyświetlić obraz pełnowymiarowy)

Podsumowanie

Celem tego samouczka było pokazanie, jak można utworzyć trasę niestandardową. Przedstawiono sposób dodawania trasy niestandardowej do tabeli tras w pliku Global.asax reprezentującym wpisy w blogu. Omówiliśmy sposób mapowania żądań wpisów w blogu na kontroler o nazwie ArchiveController i akcji kontrolera o nazwie Entry().