Nei precedenti script abbiamo visto come possiamo personalizzare il routing di ASP.NET Web API per avere più flessibilità nella definizione degli URL, invece che restare ancorati ai soli verbi HTTP.
Una modalità ancora più intuitiva è quella introdotta dal progetto AttributeRouting, disponibile su NuGet e liberamente utilizzabile nelle nostre applicazioni. Come possiamo notare dall'immagine in basso, esistono due package distinti, uno per ASP.NET MVC e uno per ASP.NET Web API; pertanto, dobbiamo installare quello idoneo alla tipologia di progetto che stiamo realizzando (o, eventualmente, entrambi).

Una volta installato il package possiamo eliminare dal file Global.asax le chiamate alle configurazione standard delle route e indicare puntualmente, su ogni action, gli URL con cui vogliamo invocarle. Per esempio:
public class HomeController : Controller { [GET("")] public ActionResult Index() { ... } [GET("About")] public ActionResult About() { ... } [GET("Home/Contact")] public ActionResult Contact() { ... } }
Internamente, AttributeRouting ispeziona gli attribute inseriti e crea automaticamente le regole di route; pertanto il loro funzionamento è assolutamente trasparente per il resto dell'applicazione. Una conseguenza, per esempio, è che gli helper ActionLink continueranno a funzionare senza alcuna modifica, e si adegueranno agli attributi che abbiamo specificato.
Se necessario, possiamo anche indicare nel template eventuali parametri e relativi constraint:
[GET("Hello/{name}")] public ActionResult SayHello(string name) { return this.View((object)name); } [GET("Customer/{id:int}"] public ActionResult GetCustomerDetails(int id) { ... }
Gli esempi che abbiamo visto fino a ora riguardano ASP.NET MVC, ma in ASP.NET Web API la logica è esattamente la stessa:
[HttpGet] [GET("api/Say/{name}")] public string SayHello(string name) { return "Ciao, " + name; }
AttributeRouting dispone anche di funzionalità più avanzate, quali supporto alle aree, parametri opzionali e valori di default, URL multipli per la medesima action. Per maggiori informazioni, possiamo fare riferimento alla guida sul sito ufficiale:
http://attributerouting.net/
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire la cancellazione di una richiesta in streaming da Blazor
Applicare un filtro per recuperare alcune issue di GitHub
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Gestione dei nomi con le regole @layer in CSS
Migrare una service connection a workload identity federation in Azure DevOps
Recuperare l'ultima versione di una release di GitHub
Introduzione alle Container Queries
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Scrivere selettori CSS più semplici ed efficienti con :is()
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Potenziare la ricerca su Cosmos DB con Full Text Search
I più letti di oggi
- Avviare e arrestare programmaticamente un Hosted Service di ASP.NET Core
- Il web per le masse: Microsoft presenta il nuovo editor gratuito WebMatrix
- Windows Phone 8 Developer Day - Milano
- Learn&Get ASP.NET 2.0 AJAX - Milano
- .NET Conference Italia 2024 - Milano
- Anche Windows Server 2008 R2 in beta1
- Speciale costruire applicazioni con cloud e servizi
- MIX 2011: Tutte le novità dei tool di ASP.NET MVC 3
- Windows Phone 7.1 Mango: ecco i tool in beta
- Disponibile la ROM e l'SDK di Windows Phone 7.1 beta 2