Condividi tramite


Creazione di route personalizzate (VB)

di Microsoft

Informazioni su come aggiungere route personalizzate a un'applicazione MVC ASP.NET. In questa esercitazione si apprenderà come modificare la tabella di route predefinita nel file Global.asax.

Questa esercitazione illustra come aggiungere una route personalizzata a un'applicazione MVC ASP.NET. Si apprenderà come modificare la tabella di route predefinita nel file Global.asax con una route personalizzata.

Nelle applicazioni MVC ASP.NET, la tabella di route predefinita funzionerà correttamente. Tuttavia, si potrebbe scoprire di avere esigenze di routing specializzate. In tal caso, è possibile creare una route personalizzata.

Si supponga, ad esempio, di creare un'applicazione blog. È possibile gestire le richieste in ingresso simili alle seguenti:

/Archive/12-25-2009

Quando un utente immette questa richiesta, si vuole restituire la voce di blog corrispondente alla data 12/25/2009. Per gestire questo tipo di richiesta, è necessario creare una route personalizzata.

Il file Global.asax nell'elenco 1 contiene una nuova route personalizzata denominata Blog, che gestisce le richieste che hanno un aspetto simile a /Archive/entry date.

Elenco 1 - Global.asax (con route personalizzata)

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

L'ordine delle route aggiunte alla tabella di route è importante. La nuova route blog personalizzata viene aggiunta prima della route predefinita esistente. Se si è invertito l'ordine, la route predefinita verrà sempre chiamata anziché la route personalizzata.

La route di blog personalizzata corrisponde a qualsiasi richiesta che inizia con /Archive/. Quindi, corrisponde a tutti gli URL seguenti:

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

La route personalizzata esegue il mapping della richiesta in ingresso a un controller denominato Archive e richiama l'azione Entry(). Quando viene chiamato il metodo Entry(), la data di immissione viene passata come parametro denominato entryDate.

È possibile usare la route personalizzata blog con il controller nell'elenco 2.

Listato 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

Si noti che il metodo Entry() in Listing 2 accetta un parametro di tipo DateTime. Il framework MVC è sufficientemente intelligente da convertire automaticamente la data di immissione dall'URL in un valore DateTime. Se il parametro della data di immissione dall'URL non può essere convertito in un valore DateTime, viene generato un errore (vedere la figura 1).

Figura 1 - Errore durante la conversione del parametro

Finestra di dialogo relativa al nuovo progetto

Figura 01: Errore durante la conversione del parametro (fare clic per visualizzare l'immagine a dimensione intera)

Riepilogo

L'obiettivo di questa esercitazione è illustrare come creare una route personalizzata. Si è appreso come aggiungere una route personalizzata alla tabella di route nel file Global.asax che rappresenta le voci di blog. È stato illustrato come eseguire il mapping delle richieste per le voci di blog a un controller denominato ArchiveController e a un'azione controller denominata Entry().