Corsi on-line

Inviare un form in più step

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevGestione degli errori nelle applicazioni ASP.NET
  • NextLeggere un Feed RSS con ASP.NET ed XSL

Spesso, in fase di invio dei dati attraverso un form, è preferibile non presentare all'utente un modulo molto lungo al fine di non scoraggiarlo da una compilazione apparentemente lunga e complessa: a tal fine, quindi, è consigliabile dividere il modulo in più step da presentare in sequenza.

Generalmente, si usa associare - all'interno di ciascun blocco - i dati omogenei; ad esempio un modulo di registrazione pottrebbe essere così suddiviso: username, password ed email in un primo blocco blocco, i dati anagrafici in un altro blocco e cosi via.

L'articolo continua dopo la pubblicità

Grazie alle funzioni predefinite del .NET Framework, è molto semplice in ASP.NET realizzare un simile sistema in cui, all'interno della stessa pagina, avverrà quanto segue:

  1. mostriamo un blocco di dati;
  2. verifichiamo la compilazione;
  3. se corretto, nascondiamo il blocco per passare al successivo.
E cosi via.

Veniamo dunque ad un esempio pratico, iniziando dal codice HTML, opportunamente costruito attraverso il controlli server del .NET:

<form runat="server">
  <p><asp:literal id="numero" runat="server"/></p>
  <p><asp:textbox id="uno" runat="server"/></p>
  <p><asp:button id="c1" runat="server" text="Continua" onclick="Step1"/></p>
  <p><asp:textbox id="due" runat="server"/></p>
  <p><asp:button id="c2" runat="server" text="Continua" onclick="Step2"/></p>
  <p><asp:textbox id="tre" runat="server"/></p>
  <p><asp:button id="c3" runat="server" text="Conferma" onclick="Step3"/></p>
  <p><asp:literal id="messaggio" runat="server"/></p>
</form>

Nel nostro esempio, ogni step è costituito da un unico campo e da un unico bottone di invio: tutti i bottoni porteranno allo step successivo, tranne l'ultimo che porterà alla materiale gestione dei dati.

Notiamo che all'inizio ed alla fine usiamo due elementi testuali: il primo serve ad indicare il numero dello step corrente, mentre in quello in fondo mostreremo i messaggi di errore e di conferma ad operazioni concluse.

Analizziamo il codice VB.NET:

<script runat="server" Language="VB">
Private Sub Page_Load(sender As Object, e As System.EventArgs)
  If Page.IsPostBack = False Then
    numero.Text = "Step 1"
    due.Visible = False
    tre.Visible = False
    c2.Visible = False
    c3.Visible = False
  End If
End Sub
Private Sub Step1(sender As Object, e As System.EventArgs)
  If uno.Text = "" Then
    messaggio.Text = "Campo obbligatorio!"
    Exit Sub
  End If
  numero.Text = "Step 2"
  uno.Visible = False
  due.Visible = True
  c1.Visible = False
  c2.Visible = True
  messaggio.Text = ""
End Sub
Private Sub Step2(sender As Object, e As System.EventArgs)
  If due.Text = "" Then
    messaggio.Text = "Campo obbligatorio!"
    Exit Sub
  End If
  numero.Text = "Step 3"
  due.Visible = False
  tre.Visible = True
  c2.Visible = False
  c3.Visible = True
  messaggio.Text = ""
End Sub
Private Sub Step3(sender As Object, e As System.EventArgs)
  If tre.Text = "" Then
    messaggio.Text = "Campo obbligatorio!"
    Exit Sub
  End If
  numero.Text = "Risultato"
  tre.Visible = False
  c3.Visible = False
  messaggio.Text = "Uno: " & uno.Text & "<br>Due: " & due.Text & "<br>Tre: " & tre.Text
End Sub
</script>

Innanzitutto, al caricamento della pagina verifichiamo l'evento PostBack per verificare che il contenuto della pagina non sia "falsato". Al suo interno mostriamo il messaggio da far comparire come titolo del primo step e nascondiamo tutti gli elementi degli step successivi.

Abbiamo poi delle routine che verificano la compilazione del campo corrente, nascondono lo step precedente e mostrano quello successivo.

Solo l'ultimo step non mostrerà, ovviamente, uno step successivo, bensì eseguirà la gestione dei dati: nel nostro esempio, limitandosi a mostrare a video i dati stessi.

Lascio al lettore il compito di eseguire quanto segue: creare per ogni step delle Label lato server ed utilizzarle per nascondere tutti i campi di un unico step (es. nome, cognome; username, password; email, sito Web).

Corsi
  • Corso ASP.NET
    Corso ASP.NET
    Corso completo per la creazione di applicazioni Web. A partire da 39 €
  • Corso C#
    Corso C#
    Creare applicazioni in ambiente .NET con il linguaggio C sharp. A partire da 39 €
  • Corso MS SQL Server
    Corso MS SQL Server
    Gestire database con Microsoft SQL Server. A partire da 39 €
Vedi anche...
Guide