Arricchire l'interfaccia di .NET Aspire

di Morgan Pizzini, in ASP.NET Core,

Con la versione 9.4, Aspire introduce gli Interaction service, una servizio per consentire la creazione, e l'utilizzo, di interfacce utente all'interno della dashboard, che verranno eseguite anche nel caso di utilizzo tramite Aspire CLI.

Lo scopo principale è inserire un livello di comunicazione tra applicazione e sviluppatore, che permetta la gestione di scenari complessi, richiedendo parametri o conferme. Le modifiche possono operare su tutto il ciclo di vita della risorsa: dall'esecuzione dell'applicazione fino al rilascio o la pubblicazione.

public class DeploymentService
{
    private readonly IInteractionService _interactionService;
    
    // recupro servizio tramite dependency injection
    public DeploymentService(IInteractionService interactionService)
    {
        _interactionService = interactionService;
    }

    public async Task DeployAsync()
    {
        // Creazione prompt di conferma
        var confirmResult = await _interactionService.PromptConfirmationAsync(
            "Conferma rilascio", 
            "Sei sicuro di voler procedere?");

        if (confirmResult.Canceled || !confirmResult.Data)
        {
            return;
        }

        // input di testo
        var regionInput = new InteractionInput 
        { 
           Label = "Regione", InputType = InputType.Text, Required = true 
        };
        
        // input numerico
        var instanceCountInput = new InteractionInput 
        { 
           Label = "Numero di istanze", InputType = InputType.Number, Required = true 
        };

        // checkbox
        var enableMonitoringInput =  new InteractionInput 
        { 
           Label = "Abilita monitoraggio", InputType = InputType.Boolean 
        };

        // Creazione prompt di raccolta dati
        var multiInputResult = await _interactionService.PromptInputsAsync(
            "Configurazione avanzata",
            "Configura le impostazioni di distribuzione:",
            [regionInput, instanceCountInput, enableMonitoringInput],
            new InputsDialogInteractionOptions
            {
                ValidationCallback = async context =>
                {
                    if (string.IsNullOrEmpty(regionInput.Value))
                    {
                        // aggiunta dell' errore di validazione
                        context.AddValidationError(regionInput, "Inserire una regione");
                    }
                }
            });

        if (multiInputResult.Canceled)
        {
            return;
        }

        // [continuazione del deployment con i parametri raccolti]
    }
}

Il sistema di input supporta diverse tipologie di dati, offrendo così grande flessibilità nella progettazione delle interazioni e interfacce: testo libero, password, numeri, menu a discesa, spunte. È possibile definire callback di validazione personalizzate, Markdown per descrizioni, configurazione pulsanti e stili dell'interfaccia.

Commenti

Visualizza/aggiungi commenti

| Condividi su: LinkedIn, Facebook

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi