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
Creare moduli CSS in React
Paginare i risultati con QuickGrid in Blazor
Implementare il throttling in ASP.NET Core
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Cambiare la chiave di partizionamento di Azure Cosmos DB
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Short-circuiting della Pipeline in ASP.NET Core
Sfruttare lo streaming di una chiamata Http da Blazor
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Installare le Web App site extension tramite una pipeline di Azure DevOps
Usare una container image come runner di GitHub Actions
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions