Condividi tramite


Supporto dello stato di visualizzazione privato

Oltre allo stato di visualizzazione dell'applicazione, è possibile utilizzare i servizi automatici per gestire le informazioni private sullo stato per un controllo mobile ASP.NET. Quando un controllo mobile gestisce informazioni interne, è consigliabile non farne dipendere la conservazione dalle impostazioni dell'applicazione, ma scrivere l'applicazione in modo che utilizzi uno stato di visualizzazione privato. Tra gli esempi di stato di visualizzazione privato sono inclusi il form attualmente attivo in una pagina, le informazioni di impaginazione relative a un form e le decisioni specifiche di dispositivo prese da un adattatore del controllo.

Lo stato di visualizzazione privato differisce dallo stato di visualizzazione di un'applicazione per molti aspetti. Viene scritto con la pagina di cui è stato eseguito il rendering invece che salvato nello stato della sessione. Non può essere disattivato dall'applicazione. Poiché tutti gli stati privati sono generati dinamicamente, la semantica di registrazione utilizzata per uno stato di visualizzazione dell'applicazione non si applica a uno stato di visualizzazione privato.

Per utilizzare uno stato di visualizzazione privato, è necessario che un controllo esegua l'override dei metodi LoadPrivateViewState e SavePrivateViewState. Questi metodi funzionano nello stesso modo dei metodi LoadViewState e SaveViewState. Scrivere i controlli in modo che non utilizzino i meccanismi dello stato di visualizzazione dell'applicazione, quale la proprietà dello stato ViewState, per salvare le impostazioni che fanno parte di uno stato di visualizzazione privato.

Anche gli adattatori dei controlli possono essere utilizzati in uno stato di visualizzazione privato. Essi possono implementare i metodi LoadAdapterState e SaveAdapterState, che vengono chiamati dall'implementazione della classe base MobileControl rispettivamente dei metodi LoadPrivateViewState e SavePrivateViewState.

Poiché uno stato di visualizzazione privato viene scritto nel client e non viene controllato dall'applicazione, i controlli mobili devono utilizzare uno stato di visualizzazione privato nel modo più efficiente possibile. Nell'esempio che segue viene illustrata una tecnica per ottimizzare l'implementazione di un controllo.

[C#]

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);
}

Se un controllo non dispone di uno stato di visualizzazione privato da salvare, fare in modo che venga restituito un riferimento null (Nothing in Visual Basic) proveniente dal metodo SavePrivateViewState. Inoltre, non è necessario salvare le proprietà attualmente impostate sui valori predefiniti con uno stato di visualizzazione privato.

Vedere anche

Supporto dello stato di visualizzazione