2010-01-08 2 views
0

Je suis un programmeur Winforms VB.net qui tente de créer une application ASP.Net. J'utilise des classes de données (objets) à travers la réflexion dans la plupart de mes projets vb et essayait de l'adapter à ASP.net en utilisant le code VB derrière. J'ai une page Web qui sert de page d'ajout/modification pour les informations de contact. J'institue ma classe qui saisit les données de contact de la base de données puis j'ai un processus qui boucle à travers les contrôles sur le formulaire et correspond à une propriété dans la classe de données. Je peux afficher des données sans problème. Lorsque j'édite les données et que je clique sur le bouton "Soumettre", mon code appelle a puis rediffuse les contrôles du formulaire et fait correspondre le contrôle à la propriété de la classe de données pour mettre à jour la propriété de la classe. Cependant, ma classe de données n'est plus valide. Je sais que la programmation web est différente de celle des winforms, mais je n'arrive pas à la surmonter. Est-ce la mauvaise façon de procéder? Ma classe de données est-elle uniquement disponible côté serveur? Est-ce que je réinstancie juste la classe initiale et fais une boucle à travers les propriétés et change ce que l'utilisateur a changé et puis appelle la méthode de mise à jour (voir redondant)? Comment puis-je obtenir une classe de données dans un objet de session (j'ai essayé par le passé mais j'étais dans des délais serrés et j'ai dû l'abandonner, peut-être que j'ai besoin de le revoir?)?Classe de données dans ASP.Net

Merci

Répondre

2

Si vous décidez de conserver certaines de vos données dans Session, vous vous devez de regarder ce post. Votre code sera beaucoup plus propre et plus facile à entretenir.

+0

Merci. J'ai jeté un coup d'oeil à votre message et cela a beaucoup de sens pour moi. J'ai rencontré le problème sérialisable que vous avez souligné à la fin mais essayiez quelque chose de différent à ce moment-là. Je vais vérifier cela. – VBCSharp

+0

@VBCSharp Faites-moi savoir comment cela fonctionne pour vous. Honnêtement, je ne pense pas qu'il existe une meilleure façon d'utiliser Session que ce que je décris dans mon article. – TheObjectGuy

+0

Merci. Il fonctionne comme un charme. Je n'ai pas encore implémenté la façon dont vous le faites mais j'ai testé l'objet Session et cela a bien fonctionné. – VBCSharp

0

Vous devez enregistrer votre classe de données quelque part, généralement dans une variable de session, sinon elle disparaît dès que la page est renvoyé à l'utilisateur. Ou bien vous devez recréer la classe de données lors de la publication.

1

Oui, vous devez recharger la classe de données à partir de la base de données comme une option ou utiliser une approche alternative. La raison en est que le web est sans état, donc toutes les variables locales sont détruites puis le processus de déchargement de la page côté serveur se produit. Cela signifie qu'entre les demandes, vous avez besoin de quelque chose pour stocker vos données.

Vous pouvez lire/écrire un objet via la session colleciton, comme si:

session [ "A"] = myobj; myobj = (ObjType) Session ["A"];

Et ainsi session stocke un objet pour un utilisateur spécifique. Sinon, le cache stocke les données au niveau de l'application, de sorte qu'une instance d'un objet est disponible pour tous les utilisateurs (où la session est unique pour chaque utilisateur). Vous pouvez rendre le cache unique pour un utilisateur en ajoutant un ID utilisateur à la chaîne de cache.

var o = Cache.Get ("A"); if (o! = Null) {..}

Cache.Add ("A", o, ...);

Ainsi, ces mécanismes vous aident à conserver temporairement les données.

+0

Merci de me pointer dans la bonne direction. – VBCSharp

Questions connexes