Question

J'ai une page dans laquelle je souhaite conserver la valeur d'objet entre les publications. Je pense à deux façons de maintenir la valeur des objets

  
      
  1. Stocker la valeur dans View Sate
  2.   
  3. Stocker la valeur dans un champ caché
  4.   

quelle est la meilleure option à utiliser en fonction des performances

Était-ce utile?

La solution

Viewstate si vous n'avez pas besoin de le référencer dans un script côté client. Un champ caché si vous le faites.

Notez également que si les données sont sensibles, le Viewstate est chiffré par défaut, tandis que le champ caché, par défaut, le stocke sous forme de texte brut visible par quiconque sachant voir la source.

Modifier

Par note d'Andrew Hare sur sa propre réponse, j'édite ceci. C'est une distinction assez importante à noter. Je détesterais que quelqu'un pense qu'ils sont "en sécurité". en utilisant Viewstate en fonction de mon oubli.

Viewstate n'est PAS crypté par défaut, il est stocké en tant que codage Base-64. Il peut être décodé assez facilement. L'utilisation de Viewstate, car crypté par défaut, n'est pas valide. C'est mieux que du texte brut, mais pas à quiconque ayant la capacité de Google "décrypter Viewstate". ou "décoder Viewstate".

Ne vous fiez donc pas à Viewstate pour protéger vos informations cachées dans le code côté client.

Un article ici explique comment le chiffrer. correctement. (mais met également en garde contre les problèmes de performance).

Autres conseils

Cela n'a pas vraiment d'importance puisque ViewState est lui-même stocké dans une entrée cachée. Utilisez celui qui vous convient le mieux. Si je le pouvais, je choisirais ViewState, car le runtime ASP.NET se chargera de la sérialisation et de la désérialisation de vos objets.

J'aime ViewState - il est beaucoup plus difficile à pirater - une personne méchante pourrait facilement vous soumettre votre page avec de mauvaises données dans vos champs cachés

Vous souhaitez le stocker dans l'état d'affichage. Les champs cachés peuvent être mis à jour sur le navigateur, car ils sont destinés à stocker des informations pouvant être manipulées côté client. Asp.net va valider l’état de la vue contre toute tentative de falsification; vous devrez le faire vous-même avec le champ masqué.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top