[Maj] Créer une propriété dans le ViewState

Suite au billet publié récement sur comment créer une propriété dans le ViewState, l'un de mes collègues (Guillaume ROUCHON) m'a alerté sur le fait que cela pouvait être optimisé. En effet, dans l'exemple précédent, si la propriété est accédée nous affectons une valeur par défaut au ViewState si celle-ci était Null. Par cette action nous faisons grossir le ViewState par des données inutiles vu que la valeur par défaut ne change pas.

Voici donc une méthode qui permet de ne renseigner le ViewState si et seulement si la valeur stockée est différente de sa valeur par défaut :

public string MaProp
{
  get
  {
    object value = this.ViewState["MaProp"];

    if (value != null)
    {
      return ((string)value);
    }

    return (string.Empty);
  }
  set
  {
    this.ViewState["MaProp"] = null;

    if ( !string.IsNullOrEmpty(value) )
    {
      this.ViewState["MaProp"] = value;
    }
  }
}


Par cette simple modification, on affecte le ViewState seulement si la valeur par défaut est différente, ce qui allège sa taille et donc les performances de la page, car cela limite sa taille et son temps de transport sur le réseau.



Tags:
Catégories: ASP.Net

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed

Créer une propriété dans le ViewState

Une des questions qui revient souvent quand on développe en ASP.Net, c'est comment persister facilement et simplement une donnée sur une page dans le ViewState pour pouvoir la réutiliser à chaque PostBack. Avant de faire cela il faut déjà comprendre que cela à un coup.

En effet la moindre information persistée dans le ViewState prend beaucoup de place et donc alourdit la page et son chargement, il faut donc l'utiliser avec beaucoup de précaution. Il faut savoir aussi que seules les données sérialisables peuvent être ajoutées au ViewState.

Ensuite il suffit de procéder comme ceci pour créer sa propriété dans sa page :

public string MaProp
{
  get
  {
    if ( this.ViewState["MaProp"] == null )
    {
      this.ViewState["MaProp"] = String.Empty;
    }

    return((string)this.ViewState["MaProp"]);
  }
  set
  {
    this.ViewState["MaProp"] = value;
  }
}

Vous pouvez remarquer que le nom de la clé dans le ViewState est la même que ma propriété, même si cela n'est pas obligatoire cela permet une meilleurs relecture et ajoute une cohérence à notre code.

Dans le cadre du GET je test si le ViewState possède déjà ma clé, si ce n'est pas le cas on lui affecte une valeur par défaut pour permettre une initialisation automatique, pensez à bien caster le retour du GET.


Tags:
Catégories: ASP.Net

0 Commentaires
Actions: Permalink | Comment RSSRSS comment feed