n° 219
Novembre 2017
Dicembre 11, 2017, 01:12:28 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Passaggio parametri tra pagine asp.net  (Letto 12482 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
Rober23
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 40


Mostra profilo
« inserita:: Dicembre 18, 2012, 11:29:19 »

ciao a tutti, un aiuto! ho una pagina ascx dove ho una textbox in cui voglio inserire un testo (es.: pippo.html). ho una seconda pagina, stavolta aspx, in cui all'interno ho un iframe dove visualizzare una pagina html. vorrei che, una volta scritto pippo.html, questo valore lo passassi alla pagina aspx per visualizzare nell'iframe quella pagina.
Registrato
DonZaucker74
Jr. Member
**

Karma: +4/-1
Scollegato Scollegato

Messaggi: 150


Mostra profilo
« Risposta #1 inserita:: Dicembre 18, 2012, 11:41:07 »


Puoi seguire 2 strade:
1) utilizzare l'oggetto Session (per salvare il testo);
2) utilizzare la query string.

Dal tuo post mi pare di capire che la 1) sia da preferire in quanto piu semplice da gestire.

dZ
Registrato
Rober23
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 40


Mostra profilo
« Risposta #2 inserita:: Dicembre 18, 2012, 12:23:17 »

ok, quindi nell'evento della casella di testo metto

dim a as string
a=textbox.text (cioè il testo che vado a mettere nel textbox)
session(a)

e nella seconda pagina?
Registrato
DonZaucker74
Jr. Member
**

Karma: +4/-1
Scollegato Scollegato

Messaggi: 150


Mostra profilo
« Risposta #3 inserita:: Dicembre 18, 2012, 12:52:36 »

Innanzitutto cominciamo a capire cosa è e come funziona una "sessione", quindi diamo una lettura qui:


http://msdn.microsoft.com/en-us/library/ms178581%28v=vs.100%29.aspx


Dopodiché creiamo la nostra variabile di sessione: l'oggetto Session è una collection, un insieme di coppie (chiave,valore), quindi:

Codice:
If (Not Session("FirstName") Is Nothing) Then
    Session("FirstName") = FirstNameTextBox.Text
Else
    Session.Add("FirstName", FirstNameTextBox.Text)
End If

serve per "salvare" il valore della nostra variabile nella variabile di sessione FirstName.

Codice:
dim valoreSalvato as string = ""
If (Not Session("FirstName") Is Nothing) Then
    valoreSalvato = Session("FirstName").tostring()
EndIf

serve per leggere il valore della variabile di sessione FirstName, e che andrà utilizzato nella tua seconda pagina (aspx).

Fai attenzione a 2 cose:
1) la collection contiene valori di tipo object, quindi un cast (specie in lettura) si rivela sempre necessario (il tostring() che ho messo io);
2) i valori null sono sempre in agguato, quindi un controllo preventivo ti evita problemi. Durante il salvataggio e la lettura prima di assegnare il valore assicurati che la chiave esista.

dZ
Registrato
alex.75
invioattach
Full Member
***

Karma: +14/-4
Scollegato Scollegato

Messaggi: 357



Mostra profilo WWW
« Risposta #4 inserita:: Dicembre 18, 2012, 07:50:00 »

Potresti spiegare meglio il tuo intento e la tua reale necessità?

Il "punto di partenza" è una pagina web o un controllo?
(.asPx = Pagina ASP.Net, .asCx = Controllo personalizzato da utilizzare nelle pagine ASP.Net).

Da quello che lasci intendere sembra che dalla pagina A.html/.aspx effettui una qualche operazione (link, bottone o selezione) e grazie ad un redirect (non parli di invio dati) visualizzi la pagina B.html/.aspx dove è presente (o viene creato) un iframe a cui vuoi dare l'indirizzo preso da un controllo (input HTML / TextBox ASP.Net) presente nella pagina A.

Pagina A (con textbox, Inserisci l'URL <input type="text" name="iframe_url" />)
click ->
Pagina B (con <iframe src="[valore preso da input/textbox iframe_url]">).

É questo ciò che devi fare?

Se sì, non serve assolutamente scomodare l'oggetto Session (da usare il meno possibile, in generale) e non servirebbe nemmeno usare codice lato server a dire il vero.
Poi, perché vuoi usare un iframe posto su un'altra pagina? Perché non redirezioni semplicemente l'utente sull'URL che viene inserita o inserisci l'iframe nella pagina in cui ti trovi, a cosa serve l'iframe? Te lo chiedo solo per capire meglio le tue esigenze e darti un consiglio mirato.

Il mio parere (con i pochi dati e le supposizioni necessarie) è che il passaggio dalla pagina A alla pagina B può avvenire senza (ab)usare l'oggetto Session, grazie a:
1) Post da A a B grazie alla proprietà Action dell'oggetto Form.
2) Response.Redirect con valori passati in querystring o HttpContext (ora non ricordo in quale proprietà, oppure usando PreviousPage)
3) Server.Transfer
4) Javascript

Per esperienza ti dico che il Response.Redirect è la soluzione più comune, il Server.Transfer è quella probabilmente più corretta. Ti suggerisco di studiare cosa siano e soprattutto come funzionano Response.Redirect e Server.Transfer (googla "Redirect vs Transfer", se non sbaglio trovi materiale anche su questo stesso forum) prima ancora che il Session.

@DonZaucker74, ogni oggetto ha il suo uso ed ambito, gli oggetti da me suggeriti sono stati creati apposta per il passaggio di dati (il titolo, perfetto, di questo post è una vera e propria FAQ), per questo li suggerisco. Invece l'oggetto Session serve a mantenere delle informazioni relative alla sessione utente (ma poi solitamente ci finisce di tutto), l'oggetto Application (HttpApplication) serve a mantenere informazioni condivise tra gli utenti (esempio banale: chat), l'oggetto Cache serve a mantenere dei dati in memoria senza leggerli ad ogni richiesta (esempio: collezione delle traduzioni in lingua oppure i dati più comunemente richiesti). Ricorrere all'oggetto Session è sempre la prima via suggerita (e percorsa) ad utenti alle prime armi o mediamente esperti. Figurati che io vivo felicemente senza Session (rimuovo addirittura il modulo dal web.config) da almeno 2 anni, anche con applicazioni molto complesse (tante e specifiche informazioni per utente/ruolo/sessione del browser).

Ribadisco che, se lo scenario è quello da me supposto, credo che basti del semplice Javascript sulla pagina A per leggere (ed eventualmente validare) l'URL inserita, inviare il dato in querystring e nella pagina B leggere il querystring ed indirizzare l'iframe presente (o l'iframe presente nella stessa pagina A, magari mostrandolo in una "finestra" modale).
Registrato
DonZaucker74
Jr. Member
**

Karma: +4/-1
Scollegato Scollegato

Messaggi: 150


Mostra profilo
« Risposta #5 inserita:: Dicembre 19, 2012, 11:40:43 »


Si, condivido e sottoscrivo tutto.

Posso solo dire che la tua soluzione l'avevo pensata anche io ed era quella indicata nel punto 2) del mio primo post.
Ho ritenuto più giusto partire da una soluzione piu "semplice", anche se non ottimale, per poi arrivare a quanto hai scritto tu, cioè alla soluzione ottimale, in un eventuale altro post. L'ho fatto anche perchè il problema non era "completamente" chiaro.
Forse era il caso di elencare pregi e difetti di quanto suggerito da me subito, e proporre direttamente la soluzione senza codice lato server.


dZ
Registrato
alex.75
invioattach
Full Member
***

Karma: +14/-4
Scollegato Scollegato

Messaggi: 357



Mostra profilo WWW
« Risposta #6 inserita:: Dicembre 19, 2012, 04:20:30 »

Non è detto che la mia sia la soluzione giusta al caso reale però ho voluto "mettere la pulce nell'orecchio" a @Robert23 ed altri che capiteranno su questo post. Spero di aver destato almeno un po' di curiosità in merito a tali classi ed al loro utilizzo. É comunque valido tutto quanto da te detto riguardo l'oggetto Session ed il suo utilizzo.
Registrato
Rober23
Newbie
*

Karma: +0/-1
Scollegato Scollegato

Messaggi: 40


Mostra profilo
« Risposta #7 inserita:: Dicembre 19, 2012, 05:43:34 »

Grazie, so di non essermi espresso bene, sono alle prime armi. Comunque ho risolto utilizzando l'oggetto session e il response.redirect
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines