Nello scorso script (https://www.aspitalia.com/script/1437/Gestire-Tipi-Complessi-Query-String-IParsable-ASP.NET-Core-7.0.aspx), abbiamo visto come, grazie all'interfaccia IParseable, possiamo costruire un oggetto più o meno complesso a partire da una stringa nella request. Quando abbiamo invece diversi parametri, per esempio chiavi in query string, potremmo comunque voler raggrupparli all'interno di un singolo oggetto.
Per esempio, per rappresentare il nome proprio di una persona, potremmo accettare due parametri, "First" e "Last", e utilizzarli per popolare una classe Name:
public class Name { public string? First { get; set; } public string? Last { get; set; } }
Da ASP.NET Core 7, possiamo creare un'action che accetti Name come parametro, e marcarlo con l'attributo AsParameters:
[HttpGet("name")] public IActionResult GetName([FromQuery, AsParameters] Name request) { return this.Ok(request); }
La stessa tecnica funziona con un endpoint su Minimal API:
app.MapGet("/name", ([AsParameters] Name name) => { return "Hello " + name.First + " " + name.Last; });
Un aspetto a cui prestare attenzione è la gestione dei parametri opzionali: come possiamo notare, abbiamo definito entrambe le proprietà di Name come nullable string: in questo modo, ASP.NET Core considererà i due parametri come opzionali, e il nostro endpoint verrà invocato anche se uno dei due - o entrambi - dovessero mancare. Diversamente, sarebbero risultati obbligatori, e in questo caso il binding sarebbe fallito.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Selettore CSS :has() e i suoi casi d'uso avanzati
Fornire parametri ad un Web component HTML
Utilizzare Hybrid Cache in .NET 9
Il nuovo controllo Range di Blazor 9
Potenziare la ricerca su Cosmos DB con Full Text Search
Eseguire i worklow di GitHub su runner potenziati
Eseguire query in contemporanea con EF
Ottenere un token di accesso per una GitHub App
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Eseguire script pre e post esecuzione di un workflow di GitHub
Generare velocemente pagine CRUD in Blazor con QuickGrid
I più letti di oggi
- I nuovi controlli per l'Application Bar in Windows 8.1
- .NET Conference Italia 2024 - Milano
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Montare Azure Blob Storage su Linux con BlobFuse2