Tutte le volte che abbiamo la necessità di recuperare il link a una determinata action conviene sfruttare la funzionalità di generazione degli URL messa a disposizione dal routing. Il vantaggio, rispetto a scrivere manualmente delle stringhe, è che se le impostazioni del routing in futuro dovessero cambiare, tutti gli url generati si aggiorneranno automaticamente e rifletteranno il nuovo setup.
In ASP.NET MVC abbiamo a disposizione la classe UrlHelper, che possiamo facilmente invocare da un controller in questo modo:
var url = this.Url.Action( "MyAction", "MyController", new { id = 5});
Anche ASP.NET Web API possiede un oggetto UrlHelper, ma la sintassi è leggermente differente. Infatti, dall'interno di un ApiController, dovremo scrivere:
var url = this.Url.Link( "DefaultApi", new { controller = "myController", id = 5});
Come possiamo notare, abbiamo innanzi tutto dovuto specificare il nome della route di Web API, che, per default, è DefaultApi. Il secondo parametro è un anonymous type in cui invece abbiamo indicato i parametri della regola di routing:
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
In particolare, essi sono solo il controller e l'id, perché la action invocata dipenderà dal verbo HTTP della chiamata (GET, POST, PUT, e via discorrendo).
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Creare un'applicazione React e configurare Tailwind CSS
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Filtering sulle colonne in una QuickGrid di Blazor
Effettuare il binding di date in Blazor
Aggiungere interattività lato server in Blazor 8
Utilizzare Azure AI Studio per testare i modelli AI
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Creare una libreria CSS universale: Immagini
Ottimizzazione dei block template in Angular 17