codice:
Ciascun controllo di una pagina Web Form, compresa la pagina stessa, dispone di una proprietà ViewState ereditata dalla classe base Control. La proprietà ViewState viene utilizzata dal framework di pagine ASP.NET per salvare automaticamente i valori della pagina e di ciascun controllo prima di eseguire il rendering alla pagina. Quando la pagina viene inviata, una delle prime operazioni eseguite dall'elaborazione della pagina consiste nel ripristinare lo stato di visualizzazione.
È possibile utilizzare la proprietà ViewState per salvare i valori indipendenti dallo stato del controllo tra i percorsi di andata e ritorno al server. La proprietà ViewState viene memorizzata nella pagina in un campo nascosto del form.
Nota Per utilizzare la proprietà ViewState, è necessario che il form contenga un elemento del form server (<form runat="server">). Per alcuni suggerimenti sull'utilizzo, vedere Suggerimenti per la gestione dello stato.
Per memorizzare le informazioni nello stato di visualizzazione
Creare e memorizzare un nuovo elemento nella proprietà ViewState.
Nota È necessario che i dati siano in un formato compatibile con lo stato di visualizzazione. Ad esempio, per memorizzare un dataset nello stato di visualizzazione, occorre prima convertirlo in una rappresentazione di stringa.
' Visual Basic
ViewState("color") = "yellow"
// C#
ViewState["color"] = "red";
Per recuperare le informazioni dallo stato di visualizzazione
Recuperare il valore di un elemento specificandone il nome. Eseguire il cast dell'oggetto al tipo desiderato nello stato di visualizzazione.
Nell'esempio che segue è illustrato come recuperare un valore memorizzato in precedenza con il nome "color" nella proprietà ViewState. Si noti che è stato eseguito il cast del valore in una stringa.
' Visual Basic
Dim strColor as String
strColor = CStr(ViewState("color"))
// C#
string strColor;
strColor =(string)ViewState["color"];
Nell'esempio che segue è illustrato come salvare un dataset nello stato di visualizzazione e quindi recuperarlo. Per salvarlo, è necessario creare una rappresentazione di stringa utilizzando il metodo DataSet.WriteXml del dataset. Quando si recupera il dataset, ne viene eseguito il cast in una classe StringReader, quindi viene chiamato il metodo DataSet.ReadXml del dataset.
' Visual Basic
If Page.IsPostBack Then
Dim sr as New System.IO.StringReader(CStr(ViewState("dsCustomers")))
DsCustomers1.ReadXml(sr)
Else
SqlDataAdapter1.Fill(DsCustomers1)
Dim sw as New System.IO.StringWriter()
DsCustomers1.WriteXml(sw)
ViewState("dsCustomers") = sw.ToString()
End If
// C#
if (Page.IsPostBack)
{
System.IO.StringReader sr = new System.IO.StringReader((string)(ViewState["dsCustomers"]));
dsCustomers1.ReadXml(sr);
}
else
{
sqlDataAdapter1.Fill(dsCustomers1);
System.IO.StringWriter sw = new System.IO.StringWriter();
dsCustomers1.WriteXml(sw);
ViewState["dsCustomers"] = sw.ToString();
}