Puis-je utiliser ViewState pour éliminer le besoin de transmettre une chaîne de requête?

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

Question

J'ai une page avec plusieurs listes extensibles. Dans un monde parfait, j'aimerais afficher des liens vers chacune de ces listes et, lorsque vous cliquez dessus, la page sera rechargée avec cette liste particulière affichée. J'ai lu que ViewState peut éliminer le besoin de champs de saisie cachés, de chaînes de requête, etc., mais je ne connais pas bien le concept.

En gros, je dois accomplir deux choses:

  1. Ajouter l'ID de la liste à ViewState obj lorsque vous cliquez sur le lien
  2. Lire l'ID de ViewState obj lorsque la page est chargée, afficher cette liste

Quelqu'un peut-il me fournir des ressources et / ou de l'aide sur ce sujet? Merci!

Était-ce utile?

La solution

ViewState est essentiellement un long champ masqué codé, stocké en haut de votre page. La principale différence entre cela et un champ masqué ordinaire est qu'ASP .NET le décodera et l'analysera automatiquement lors de la publication.

Il existe de meilleurs moyens d’atteindre ce que vous voulez faire.

  • Vous pouvez utiliser la chaîne de requête. Tout ce que vous passez est un identifiant de liste. Ajoutez l'ID de liste à la fin de vos liens et recherchez-la sur Page_Load. Chargez la liste appropriée si vous la trouvez. Vous voudrez gérer le cas où un ID de liste n'est pas transmis. La chaîne de requête n'est pas mauvaise . Cela peut considérablement aider à réduire le poids de la page. Utilisé avec un décodeur correct , vous obtenez un contrôle important sur ce qui est transmis (et surtout, ce qui ne l'est pas)
  • Si vous utilisez des contrôles ASP .NET (tels que Button ou LinkButton) pour déclencher l'affichage d'une liste, vous pouvez définir la propriété CommandArgument et la sélectionner dans le code d'événement. Vous pouvez ensuite le transmettre en tant que paramètre à la méthode ou au contrôle en cours d'affichage de votre liste.

Autres conseils

ViewState est utilisé pour stocker des informations sur une seule page entre les publications, pas pour transmettre des arguments entre les pages.

Vous pouvez passer des arguments entre les pages en utilisant:

  1. session
  2. Chaîne de requête
  3. Cookies
  4. Base de données personnalisée
  5. Postbacks croisés

Aucune de ces méthodes n’ajoutera automatiquement de données au ViewState de la page demandée. Parmi ceux-ci, je pense que seul le n ° 2 fonctionne avec des liens HTML droits (GET), le reste implique généralement une publication (POST).

Vous aurez toujours besoin d'une sorte de configurateur ViewState ( ViewState [" Id "] = source.Id ) dans la page demandée.

Comment: transmettre des valeurs entre les pages Web ASP.NET

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