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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.