TOC

This article has been localized into Italian by the community.

Routing:

Introduzione

Il "Routing" in MVC è il termine con cui si indice il concetto di mappatura di un URL. Ovvero la trasformazione di quello che un utente finale richiede tramite il proprio brower verso un metodo definito in uno dei vostri controllers. Metodo che poi invia una risposta indietro al browser per la visualizzazione all'utente finale. La risposta è spesso una View, ma può anche essere un semplice pezzo di testo, una Redirect o una di tante altre opzioni possibili.

Il routing predefinito

Se state lavorando su un progetto nuovo, creato dal modello Empty di Visual Studio, allora la vostra applicazione non ha ancora definito nessun "routing". Abbiamo parlato brevemente del routing nell'articolo in cui abbiamo mostrato come aggiungere un Controller al progetto, ma se non avete seguito questa guida sin dall'inizio, dobbiamo fare un breve riepilogo. Provate ad aprire il file Startup.cs che dovrebbe essere stato aggiunto al vostro progetto quando lo avete creato - se non c'è nulla a proposito del routing allora dovrete aggiungerlo manualmente. Il modo più semplice è quello di utilizzare due metodi di supporto chiamati UseRouting() e MapDefaultControllerRoute() - essi aggiungono un routing predefinito (fallback) al vostro progetto che quindi cercherà di mappare gli URL ai metodi di uno dei vostri controllers. Se non viene specificato un nome di Controller l'URL verrà comunque mappato al HomeController.

Ecco come dovrebbe essere il vostro file Startup.cs:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if(env.IsDevelopment())
    {
app.UseDeveloperExceptionPage();
    }

    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
endpoints.MapDefaultControllerRoute();
    });
}

Grazie a questi metodi, la vostra applicazione ora supporta un routing di base. Ecco alcuni esempi di URL che ora funzionano e la combinazione Controller/Metodo a cui essi vengono mappati:

http://localhost/           ->      HomeController.Index()  
http://localhost/Home/Index     ->      HomeController.Index()  
http://localhost/Test/  ->      HomeController.Test()  
http://localhost/Home/Something ->      HomeController.Something()

Ma questo routing di base non influenza solo il HomeController, anzi, aggiunge un supporto generale per accedere ad un metodo di un controller senza dover specificare nulla. Pertanto se avete un controller chiamato UserController, che possiede un metodo chiamato Details(), potete accedervi utilizzando il seguente URL: /User/Details

In altre parole, la route predefinita funziona come una regola che si applica a tutti i controller e quindi rende più semplice avere delle pagine pronte rapidamente. Ma naturalmente, questo funziona solo se tutti i vostri contenuti seguono lo stesso pattern: /[nome-de-controller]/[nome-del-metodo]

Nel momento stesso in cui deviate da questo pattern, magari perchè non volete che il nome specifico del vostro controller appaia nell'URL, allora avrete bisogno di aggiungere le vostre regole. Non preoccupatevi - potete sempre affidarvi sul routing predefinito, semplicemente aggiungendo le vostre regole prima che il routing predefinito venga utilizzato. Ne parleremo ancora più avanti.

Riepilogo

Il Routing è il processo con cui un URL, ovvero il modo con cui un utente accede ad una specifica pagina o funzione, viene mappato ad un Controller e ad un metodo su quel Controller, il quale è responsabile per creare la risposta alla richiesta dell'URL. Grazie al Routing predefinito, come abbiamo visto in questo articolo, potete ottenere le funzioni di base del routing in modo facile, ma per situazioni più complesse, avrete bisogno di creare le vostro regole di routing. Nessun problema, ne parleremo molto di più di questo nei prossimi articoli.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!