Unterstützen des privaten Ansichtszustands
Aktualisiert: November 2007
Zusätzlich zum Anwendungsansichtszustand können Sie private Zustandsinformationen für ein ASP.NET Mobile-Steuerelement beibehalten. Wenn ein mobiles Steuerelement interne Informationen enthält, ist es empfehlenswert, dass Sie nicht auf Anwendungseinstellungen angewiesen sind, um solche Informationen beizubehalten. Schreiben Sie die Anwendung stattdessen so, dass sie den privaten Ansichtszustand verwendet. Beispiele für den privaten Ansichtszustand sind das auf einer Seite gerade aktive Formular, Paginierungsinformationen zu einem Formular und von einem Steuerelementadapter getroffene gerätespezifische Entscheidungen.
Ein privater Ansichtszustand unterscheidet sich in vielerlei Hinsicht von einem Anwendungsansichtszustand. Er wird nicht im Sitzungszustand gespeichert, sondern mit der wiedergegebenen Seite geschrieben. Er kann auch nicht durch die Anwendung deaktiviert werden. Da der private Zustand grundsätzlich dynamisch ermittelt wird, ist die für einen Anwendungsansichtszustand verwendete Trackingsemantik auf den privaten Ansichtszustand nicht anwendbar.
Um den privaten Ansichtszustand zu verwenden, muss ein Steuerelement die LoadPrivateViewState-Methode und die SavePrivateViewState-Methode überschreiben. Diese funktionieren genauso wie die LoadViewState-Methode und die SaveViewState-Methode. Schreiben Sie die Steuerelemente nicht so, dass sie zum Speichern von Einstellungen, die Teil des privaten Ansichtszustands sind, Verfahren für den Anwendungsansichtszustand verwenden (z. B. die ViewState-Zustandseigenschaft).
Steuerelementadapter können auch für den privaten Ansichtszustand verwendet werden. Ein Steuerelementadapter kann die LoadAdapterState-Methode und die SaveAdapterState-Methode implementieren. Diese werden jeweils von der MobileControl-Basisklassenimplementierung der LoadPrivateViewState-Methode und derSavePrivateViewState-Methode aufgerufen.
Da der private Ansichtszustand auf den Client geschrieben wird und nicht der Anwendungssteuerung unterliegt, müssen die mobilen Steuerelemente den privaten Ansichtszustand so effizient wie möglich verwenden. Das folgende Beispiel veranschaulicht ein Verfahren zum Optimieren der Implementierung eines Steuerelements.
protected override Object SavePrivateViewState()
{
Object baseState = base.SavePrivateViewState;
Object myState = GetMyState();
if (baseState == null && myState == null)
return null;
else if (myState == null)
return baseState;
else
return new Object[] { baseState, myState };
}
protected override void LoadPrivateViewState(Object state)
{
if (state is Object[])
{
Object[] arr = (Object [])state;
base.LoadPrivateViewState(arr[0]);
LoadMyState(arr[1]);
}
else if (state != null)
base.LoadPrivateViewState(state);
}
Wenn ein Steuerelement keinen privaten Ansichtszustand speichern muss, geben Sie von der SavePrivateViewState-Methode null zurück. Beachten Sie auch, dass Sie den privaten Ansichtszustand nicht verwenden müssen, um Eigenschaften zu speichern, die auf ihre Standardwerte festgelegt sind.