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
Miglioramenti nell'accessibilità con Angular CDK
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Implementare il throttling in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Eseguire operazioni sui blob con Azure Storage Actions
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Paginare i risultati con QuickGrid in Blazor
Load test di ASP.NET Core con k6
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Eseguire attività pianificate con Azure Container Jobs
Utilizzare Model as a Service su Microsoft Azure
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0
- Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
- Speciale Windows Store app: costruire app con WinRT per Windows 8