Trasferire i dati tra più WebForm ASP.NET

di Daniele Bochicchio, in ASP.NET, Web Form,

Trasferire i dati di una WebForm all'interno di un'altra rappresenta uno dei problemi più diffusi, specie perchè con Classic ASP siamo stati abiutati a suddividere logicamente il flusso di invio di una form di dati in due pagine diverse.
A parte questa ragione, questa tecnica può avere senso in ambiti differenti, ad esempio quando si vuole sfruttare una certa logica all'interno di due diverse form.
Per portare a termine il nostro progetto dovremo creare due files e sfruttare Server.Transfer per inviare il flusso alla seconda WebForm. Sfruttando Context.Items, già analizzato nello script #478, è possibile inserire i dati prelevati dalla WebForm in questa apposita collezione:

<script runat="server" language="C#">
void Transfer (Object sender, EventArgs e) {
  // salviamo le informazioni nel contesto
  Context.Items["Nome"] = Nome.Text;
  Context.Items["Cognome"] = Cognome.Text;
  Context.Items["Mail"] = Mail.Text;

  // trasferiamo il controllo all'altra pagina
  Server.Transfer("post2.aspx");
}
</script>
<form runat="server">
Nome: <asp:textbox ID="Nome" runat="server"/><br>
Cognome: <asp:textbox ID="Cognome" runat="server"/><br>
E-mail: <asp:textbox ID="Mail" runat="server"/><br>
<asp:button OnClick="Transfer" Text="Procedi" runat="server" />
</form>

Sarà poi necessario definire una seconda pagina, chiamata Post2.aspx, in cui inseriremo questo codice:

<SCRIPT RUNAT="SERVER" Language="C#">
void Page_Load() {
 // recuperiamo i dati attraverso Context.Items
 lblNome.Text = Context.Items["Nome"].ToString();
 lblCognome.Text = Context.Items["Cognome"].ToString();
 lblMail.Text = Context.Items["Mail"].ToString();
}
</SCRIPT>
<p>Grazie per aver completato la form. Ci hai inviato i seguenti dati:</p>
Nome: <asp:label id="lblNome" runat="server"/><br>
Cognome: <asp:label id="lblCognome" runat="server"/><br>
E-mail: <asp:label id="lblMail" runat="server"/><br>

A questo punto le due pagine concorreranno a formare un'unica istanza e quindi condivideranno lo stesso contesto di esecuzione, cosa che rende possibile utilizzare la stessa collezione Items.

Per affrofondimenti si veda:
#478 - Condividere una variabile all'interno degli oggetti della pagina ASP.NET
https://www.aspitalia.com/liste/usag/script.aspx?ID=478

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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