MVC Framework - Motore di routing

Il routing ASP.NET MVC consente l'uso di URL che sono descrittivi delle azioni dell'utente e sono più facilmente comprensibili dagli utenti. Allo stesso tempo, il Routing può essere utilizzato per nascondere dati che non sono destinati ad essere mostrati all'utente finale.

Ad esempio, in un'applicazione che non utilizza il routing, all'utente verrà mostrato l'URL come http: //myapplication/Users.aspx? Id = 1 che corrisponderebbe al file Users.aspx all'interno del percorso myapplication e inviando l'ID come 1 , In genere, non vorremmo mostrare tali nomi di file al nostro utente finale.

Per gestire gli URL MVC, la piattaforma ASP.NET utilizza il sistema di routing, che consente di creare qualsiasi modello di URL desiderato ed esprimerli in modo chiaro e conciso. Ogni route in MVC contiene un pattern URL specifico. Questo pattern URL viene confrontato con l'URL della richiesta in arrivo e se l'URL corrisponde a questo pattern, viene utilizzato dal motore di routing per elaborare ulteriormente la richiesta.

Formato URL di instradamento MVC

Per comprendere il routing MVC, considera il seguente URL:

http://servername/Products/Phones

Nell'URL sopra, Prodotti è il primo segmento e Telefono è il secondo segmento che può essere espresso nel seguente formato:

{controller}/{action}

Il framework MVC considera automaticamente il primo segmento come nome del controller e il secondo segmento come una delle azioni all'interno di quel controller.

Note- Se il nome del tuo controller è ProductsController, menzionerai solo Products nell'URL di instradamento. Il framework MVC riconosce automaticamente il suffisso Controller.

Crea un percorso semplice

I percorsi sono definiti nel file RouteConfig.cs che è presente nella cartella del progetto App_Start.

Vedrai il seguente codice all'interno di questo file:

public class RouteConfig { 
   
   public static void RegisterRoutes(RouteCollection routes) { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
      
      routes.MapRoute( 
         name: "Default", 
         url: "{controller}/{action}/{id}", 
         defaults: new { controller = "Home", action = "Index", 
            id = UrlParameter.Optional } 
      ); 
   } 
}

Questo metodo RegisterRoutes viene chiamato da Global.ascx all'avvio dell'applicazione. Il metodo Application_Start in Global.ascx chiama questa funzione MapRoute che imposta il controller predefinito e la sua azione (metodo all'interno della classe Controller).

Per modificare la mappatura predefinita sopra come nel nostro esempio, modificare la seguente riga di codice:

defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }

Questa impostazione selezionerà il ProductsController e chiamerà il metodo Phone al suo interno. Allo stesso modo, se hai un altro metodo come Electronics all'interno di ProductsController, l'URL per esso sarebbe:

http://servername/Products/Electronics