9 messaggi dal 05 settembre 2011
www.dofoo.net
Ciao a tutti,
sono un newbie di C# e del framework e mi sto perdendo in un bicchier d'acqua.. per assurdo ho appena registrato una password con criptazione SHA384+salt ma non mi riesce di settare una variabile pubblica!

Ho fatto una pagina di test per individuare il problema ed evitare di scrivere qui del codice inutile.
la pagina aspx:

<asp:TextBox ID="_password" runat="server"></asp:TextBox>
<asp:Button ID="btn" onClick="setta" runat="server" Text="set" />
<asp:Button ID="btn2" onClick="click" runat="server" Text="scrivi" />
<br />
<asp:Label ID="lbl" runat="server" Text=""></asp:Label>

la pagina aspx.cs:

public string pass;

protected void Page_Load(object sender, EventArgs e)
{

}
protected void setta(object sender, EventArgs e)
{
pass = _password.Text;
}
protected void click(object sender, EventArgs e)
{
lbl.Text = pass;
}

quindi prima setto con btn la variabile pass, e successivamente stampo la variabile pass in una label in pagina con btn2.
il problema è che quando ho l'evento "click" cliccando su btn2 la label non viene valorizzata, e la variabile pubblica "pass" è vuota.

Non capisco dove sta l'errore..
Grazie a chiunque mi illuminerà

http://www.dofoo.net
9 messaggi dal 05 settembre 2011
www.dofoo.net
ho appena scoperto che devo dichiarare la variabile così:
public static string pass;

e per settarla e accedere al suo valore devo specificare prima la classe
così:
test.pass="something";
...
lbl.Text=test.pass;

non c'è una via meno "verbose"?

http://www.dofoo.net
710 messaggi dal 13 novembre 2008
Contributi
dovrebbe funzionare una cosa del genere

public static string pass;

protected void Page_Load(object sender, EventArgs e)
{ }
protected void setta(object sender, EventArgs e)
{ pass = "ciao"; }
protected void click(object sender, EventArgs e)
{ lbl.Text = pass; }

il succo in breve è

se la proprietà è static viene condivisa attraverso richieste multiple, altrimenti dura per il ciclo di vita della pagina

quindi nel primo caso la tua label non viene valorizzata perché pass non è static e al PageLoad successivo al PostBack viene reinizializzata

nel secondo caso funziona perché essendo static, il valore è mantenuto

per settarla non è necessario specificare la classe (in questo caso test: System.Web.UI.Page), ma basta

pass="valore";

sei all'interno della classe stessa

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.