Passaggio di variabili tra pagine aspx!!

martedì 03 novembre 2009 - 14.35

marco8717 Profilo | Newbie

Ciao a tutti, ho un piccolo problema! in pratica voglio passarmi due variabile da una pagina aspx all'altra!come faccio?
Nella miia primaPagina.aspx ho un bottone1 e 2 textbox vuote,al clic di questo bottone1 mi si apre una secondaPagina.aspx che ha al suo interno 2 textbox e un altro bottone2! al clic di questo bottone2 mi si chiude la secondaPagina.aspx e vorrei che quello che ho scritto nelle due textbox mi si salvasse in altrettante textbox della primaPagina.aspx!! spero sono stato chiaro!

FrancescoGuadagno Profilo | Senior Member

Ciao,
non mi è chiaro un dettaglio... Quando apri la secondapagina.aspx, la apri in una popup oppure la tua sessione del browser semplicemente cambia indirizzo?

Se apri una popup, allora devi giocare (e parecchio) con javascript, poichè devi recuperare il contesto del documento che ha aperto la seconda pagina. Questo perchè la comunicazione avviene a livello client e non server.

In ogni caso io ti sconsiglio di procedere in quel modo, primo perchè più delicato, secondo per la natura stessa delle pop-up. Quello che ti conviene fare è fare un redirect da primaPagina.aspx a secondaPagina.aspx. Dopodichè nella seconda pagina, al click sul pulsante effettuare un nuovo redirect a primaPagina.aspx, ricostruendo la situazione.
Il codice associato al click del bottone2 può essere qualcosa di simile al seguente:


string DestinationUrl = "primaPagina.aspx?txt1="+TextBox1.Text+"&txt2="+TextBox2.Text; Response.Redirect(DestinationUrl);

Se invecec hai proprio bisogno di una popup, forse una modal/popup Ajax può semplificarti la vita. Trovi parecchi esempi on line

marco8717 Profilo | Newbie

ok! però comunque qundo faccio il redirect sulla mia prima pagina io devo riaggiornare la pagina con i nuovi dati che ho immesso nella seconda pagina! e come faccio?

FrancescoGuadagno Profilo | Senior Member

Devi accedere al QueryString.
Nella page_Load di primaPagina.aspx:

TextBox1.Text = Request.QueryString["txt1"].ToString(); TextBox2.Text = Request.QueryString["txt2"].ToString();

Ovviamente devi gestire un pò di casi di errore perchè, così com'è, se richiami primaPagina.aspx (senza parametri) ti dirà che il querystring è null.

Potresti ad esempio fare così:

if (!Page.isPostBack) { if (Request.QueryString["txt1"] != null) TextBox1.Text = Request.QueryString["txt1"].ToString(); if (Request.QueryString["txt2"] != null) TextBox2.Text = Request.QueryString["txt2"].ToString(); }

cosmopsis Profilo | Junior Member

Scusa ma perché non utilizzi variabili di sessione???

FrancescoGuadagno Profilo | Senior Member

Utilizzare le variabili di sessione per un semplice passaggio di parametri mi sembra veramente troppo esagerato.
Normalmente le variabili di sessione vanno evitate il più possibile poichè introducono l'onere della loro distruzione al termine del loro utilizzo. Questo vuol dire che in ogni pagina tu debba sapere da quale pagina tu possa essere arrivato e di conseguenza quali variabili distruggere.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5