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
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Gestire i dati con Azure Cosmos DB Data Explorer
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Recuperare l'ultima versione di una release di GitHub
Utilizzare Locust con Azure Load Testing
Introduzione ai web component HTML
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Utilizzare DeepSeek R1 con Azure AI
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Ricevere notifiche sui test con Azure Load Testing
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
I più letti di oggi
- .NET Conference Italia 2018 - Milano
- Tutorial ASP.NET
- Seconda preview per i Dynamic Data Control 4.0
- Disponibile al download la versione finale di Mozilla Firefox 4
- Microsoft Security Bulletin MS02-044
- Shared Source Initiative per gli MVP
- Mono 1.1.10 per un po' di ASP.NET 2.0
- Webcast 'ASP.NET 2.0 HttpRuntime'