Question

Si j'ai une simple donnée à stocker (un entier ou une chaîne, par exemple), je pourrais choisir de la stocker dans ViewState ou à l'aide d'un contrôle HiddenField.

Pourquoi choisirais-je l’un plutôt que l’autre?

État de la vue

  • Difficulté à décoder par l’utilisateur (jugé non impossible), ce qui pourrait être souhaitable

HiddenField

  • La valeur peut être utilisée en JavaScript

Existe-t-il d'autres avantages et inconvénients?

Était-ce utile?

La solution

Pas vraiment, ViewState est en réalité stocké dans un champ caché, la seule différence réelle est donc l'encodage.

Sauf si vous devez manipuler la valeur avec JavaScript ou si vous souhaitez désactiver ViewState sur cette page, utilisez plutôt ViewState. Principalement juste parce qu'il existe des outils tiers ( comme celui-ci ) qui comprennent ViewState et qui ont gagné ne comprenez pas votre champ caché personnalisé.

Autres conseils

Du point de vue de la maintenabilité, j'utiliserais ViewState. C'est moins de code pour vous, ce qui réduit le nombre de points d'échec de votre logiciel. Cela signifie également que tout développeur venant après vous aura plus de facilité à maintenir votre solution.

Si vous n'êtes pas tout à fait à l'aise avec cela, écrivez un accesseur de propriété sur la page qui sert de façade pour récupérer la valeur à partir de ViewState. Plus tard, si vous vous sentez obligé de le convertir en un champ caché, l’accesseur peut gérer ce commutateur sans le vouloir pour le reste du code. Assurez-vous simplement de documenter vos raisons.

ViewState est stocké dans la page elle-même, ce qui augmente la taille de la page et peut provoquer problèmes de performances .

Nous pouvons également configurer l'application pour enregistrer la vue sur le serveur plutôt que sur la page elle-même qui pourrait protéger de certains problèmes de sécurité.

Jomit

Les champs masqués sont invisibles sur la page et leurs valeurs peuvent être visualisées dans le source d'affichage, mais les valeurs de l'état d'affichage sont codées et ne sont pas lisibles.

La valeur du champ masqué est affichée à la page suivante. (Remarque: utilisez server.transfer pour obtenir la valeur des champs cachés).

Viewstate n’est valable que sur la page sur laquelle vous êtes ou sur lequel vous postez. Avec un champ caché, vous pouvez accéder aux données de la page suivante à laquelle vous accédez (ainsi qu’à d’autres données) en utilisant la méthode PreviousPage de l’objet Page comme suit:

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top