Partager via


Prise en charge de l'état d'affichage privé

En plus de l'état d'affichage de l'application, vous pouvez gérer les informations d'état privé d'un contrôle mobile ASP.NET. Lorsqu'un contrôle mobile gère des informations internes, il est recommandé de ne dépendre des paramètres de l'application pour conserver ces informations. Il est conseillé d'écrire plutôt l'application de manière à ce qu'elle utilise un état d'affichage privé. Le formulaire actif sur une page, les informations de pagination concernant un formulaire et les décisions spécifiques au périphérique prises par l'adaptateur d'un contrôle sont notamment des exemples d'état d'affichage privé.

Un état d'affichage privé diffère d'un état d'affichage de l'application d'un certain nombre de points de vue. Il est écrit avec la page affichée au lieu d'être enregistré dans l'état de session. Il ne peut pas non plus être désactivé par l'application. Et puisque tous les états privés sont générés de manière dynamique, la sémantique de suivi utilisée pour un état d'affichage de l'application ne s'applique pas à un état d'affichage privé.

Pour utiliser un état d'affichage privé, un contrôle doit substituer les méthodes LoadPrivateViewState et SavePrivateViewState. Celles-ci fonctionnent de la même façon que les méthodes LoadViewState et SaveViewState. Il ne faut pas écrire les contrôles d'une manière telle qu'ils utilisent les mécanismes d'état d'affichage de l'application, comme la propriété d'état ViewState, pour enregistrer les paramètres qui font partie d'un état d'affichage privé.

Les adaptateurs de contrôle peuvent aussi participer à un état d'affichage privé. Un adaptateur de contrôle peut implémenter les méthodes LoadAdapterState et SaveAdapterState. Celles-ci sont appelées à partir de l'implémentation de la classe de base MobileControl des méthodes respectives LoadPrivateViewState et SavePrivateViewState.

Étant donné qu'un état d'affichage privé est écrit sur le client et n'est pas sous le contrôle de l'application, vos contrôles mobiles doivent utiliser un état d'affichage privé aussi efficacement que possible. L'exemple suivant illustre une technique d'optimisation de l'implémentation d'un contrôle.

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

Si un contrôle n'a pas d'état d'affichage privé à enregistrer, retournez null de la méthode SavePrivateViewState. Notez également que vous n'avez pas à utiliser un état d'affichage privé pour enregistrer les propriétés dont les valeurs sont actuellement celles par défaut.

Voir aussi

Autres ressources

Prise en charge de l'état d'affichage