Question

Au cours de mon périple dans le développement de contrôles ASP.NET personnalisés, je suis évidemment en train de comprendre le modèle ASP.NET PostBack et son incidence sur le développement des contrôles.

Je comprends que les contrôles n'ont pas de "durée de vie". dans ASP.NET, et doit donc être réinitialisé à chaque chargement de page. Nous surmontons ce problème en conservant les valeurs / paramètres des objets dans ViewState.

De nombreux articles que j'ai lus suggèrent par conséquent de ne pas utiliser PostBack, car cela peut ajouter une surcharge considérable à la page. Je ne cherche pas comment le désactiver, je le sais.

Ce que je recherche, c'est:

Quelles alternatives à l'utilisation du modèle PostBack pour initialiser les contrôles?

Je sais que nous pourrions utiliser QueryString, mais cela semble terriblement compliqué et, de toute évidence, peu fiable.

Idéalement, vous pouvez me donner un aperçu de l'architecture / conception d'une approche différente et des avantages / inconvénients de celle-ci.

Merci beaucoup ^ _ ^

Était-ce utile?

La solution

Eh bien, Session State est une solution côté serveur, avec son propre tas de problèmes à résoudre si vous voulez éviter ViewState. Vraiment cependant, utiliser ViewState dans un contrôle personnalisé est très bien - soyez juste pointilleux sur ce que vous stockez - ne stockez que les deltas de l'état de contrôle déclaré, ne stockez pas quoi que ce soit que vous allez obtenir de toute façon (par exemple d'un fichier Appel de base de données), etc.

Autres conseils

Vous devez stocker les valeurs quelque part, de sorte que vous êtes limité à la chaîne de requête et aux champs de formulaire masqués. Si vous associez cela à HTTP, il s’agit essentiellement des paramètres GET ou POST.

Je suppose que vous pouvez utiliser des cookies, mais ce serait vraiment compliqué.

  1. Stockez l'état de votre objet dans le contexte de la session: cela transférera la tâche de conserver l'état du client au serveur, ce qui peut être acceptable pour les applications intranet de petite taille. Pour les sites Internet de la capitale I, cela ne fonctionnera pas.

  2. AJAX-enable votre contrôle: dans ce cas, seuls les changements doivent être comptabilisés. Choisir le bon cadre est la clé ici; voir http://www.asp.net/ajax/ajaxcontroltoolkit/samples/ pour l'approche officielle des États membres; beaucoup d'autres sont possibles.

Si vous recherchez réellement une alternative au modèle PostBack, je vous conseillerais de rechercher le framework ASP.NET MVC. J'adorerais lancer WebForms au mur et faire tout ce que je veux dans MVC, mais hélas, le code hérité est une tarbaby et la réécriture n'est presque jamais la solution, alors je me connecte ...

Je pense que vous comprenez encore un peu les commandes. Les contrôles ont uniquement le problème que vous décrivez lorsque vous les ajoutez à la page de manière dynamique. Si vous déclarez vos contrôles à l’avance dans le code aspx, ils sont construits avec la page.

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