Variabili

lunedì 25 maggio 2009 - 11.37

gae58 Profilo | Senior Member

salve,

ho un dubbio sull'uso delle Variabili.

Mi spiego. Ho la necessità di memorizzare un nome in una variabile.

Nell'aspx pensavo di definire la Var:
public partial class prova : System.Web.UI.Page
{
public string NomeFile = "AA BB";
...

in un evento valorizzare la Var per poi poterla usare negli altri eventi.

Ho fatto avrie prove, compresa quella di utilizzarla come private, ma niente da fare.
Successivamente ho usato il viewStae e funziona.

Quello che vorrei sapere è sbaglio io l'uso delle Variabili od in asp.net si usano solo nel viewState o nelle session?

grazie


Gaetano

rossimarko Profilo | Guru

Ciao,

devi considerare che tra una richiesta e l'altra la classe che gestisce la pagina viene creata e distrutta, quindi i dati contenuti si perdono a meno che tu non li memorizzi nel viewstate (che verrà inserito nell'html della pagina) o in session.

Quindi se la variabile si svuota tra un evento legato ad una richiesta http e l'altra (ad esempio il click su un pulsante A e poi un click su un altro pulsante) il comportamento che hai riscontrato è normale

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

Se nella tua aspx scrivi:

<% Response.Write(this.nomeVariabile); %>

funziona. Se hai dubbi chiedi. Ciao.

gae58 Profilo | Senior Member

>Rossi Marco
>http://blogs.dotnethell.it/rossimarko

quindi ogni volta che la pagina viene ricreata, tipo il click su un pulsante perdo il valore della variabile.
Ho capito bene?

grazie

Gaetano

gae58 Profilo | Senior Member

>Se nella tua aspx scrivi:
>
><% Response.Write(this.nomeVariabile); %>

scusa se ti chiedo altre spiegazioni, ma non sono tanto esperto.

Il codice della Variabile l'inserisco nel code behind, la riga che tu mi indichi, mi dici di inserirla nel codice dell'aspx, ma la devo collegare ad una label o a che altro?

grazie


Gaetano

rossimarko Profilo | Guru


>quindi ogni volta che la pagina viene ricreata, tipo il click
>su un pulsante perdo il valore della variabile.
>Ho capito bene?
>
>grazie
>
>Gaetano

Si, è come se facessi tutte le volte la creazione di una nuova istanza della tua classe, quindi le variabili ad ogni richiesta risultano vuote.

Le uniche alternative che hai per mantenere i dati di un utente tra una richiesta e l'altra sono:
- viewstate
- session

Il viewstate è legato alla pagina, mentre la session all'utente


-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Anonimo Profilo | Senior Member

Nel code-behind basta che scrivi dopo il partial class:

public string nomeVariabile = "AA BB";

e basta.

Jeremy Profilo | Guru

Ciao a tutti.
Un'altra alternativa non sarebbe quella di dichiarare la variabile Shared(condivisa)(Static in c#) come faccio per i WebServices???
Chiedo conferma a voi.

Ciao.

rossimarko Profilo | Guru

>Ciao a tutti.
>Un'altra alternativa non sarebbe quella di dichiarare la variabile
>Shared(condivisa)(Static in c#) come faccio per i WebServices???
>Chiedo conferma a voi.
>
>Ciao.
>

Tutto dipende da che esigenze si hanno. Se la variabile deve contenere dei dati legati solo all'utente che sta guardando la pagina o meno.

Se il dato è legato solo all'utente allora per forza bisogna usare il viewstate (che è strettamente legato alla pagina visualizzata) oppure la session.

Tutti gli altri metodi (quindi variabili statiche, cache e oggetto application) sono condivisi con tutti gli utenti quindi usare ad esempio una variabile statica per contenere l'elemento selezionato da un utente sulla griglia non è corretto perchè verrebbe impostato per tutti gli utenti del sito.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

Jeremy Profilo | Guru

OK .. chiaro
Grazie.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5