2008-12-22 9 views

Répondre

0

Webforms ou ASP.NET MVC? Je suppose que les formulaires Web ...

Essayez d'utiliser un CompositeControl. S'il existe une liaison de données, vous pouvez utiliser DataBoundCompositeControl. Dans la méthode CreateCHildren vous créez dynamiquement vos contrôles ajoutez-les à la collection enfant. Voici un exemple d'un DataBoundCompositeControl assez compliqué, je créé une fois (avec la gestion des événements sur les contrôles internes de l'enfant):

Scaffolding Control

Ceci est en fait une chose vraiment difficile à obtenir droite. N'oubliez pas de reconstruire tous vos contrôles enfants à chaque fois et de stocker l'état du contrôle afin que vous puissiez tout recréer correctement.

Vous allez tout reconstruire deux fois sur des publications (et une fois sur le premier GET). Une fois pour recréer les contrôles à leur état précédent et la deuxième fois pour traiter les modifications après la liaison de données et la gestion des événements.

0

Supposons que ce scénario:

  • Vous avez une page de panier.
  • Le contrôle d'expédition est chargé.
  • L'utilisateur clique sur le bouton suivant.

--- --- Postback

  1. La page de panier est chargé
  2. Le contrôle de l'expédition est chargé.
  3. L'événement 'clic' est géré par le contrôle d'expédition.
  4. Le contrôle d'expédition est éliminé.
  5. Le contrôle de paiement est chargé.

Vous pouvez stocker une variable dans l'instance de session pour déterminer quel contrôle doit être chargé.

Dans la page PageInit du panier, vous récupérez la variable Session et chargez le contrôle correspondant (étape 1 & 2). Assurez-vous de le faire dans le PageInit pour qu'ASP.NET déclenche les événements.

Dans le gestionnaire d'événements du contrôle d'expédition, vous mettez à jour la variable Session (étape 3).

Dans la page Page_LoadComplete de la page panier, vous disposez du contrôle d'expédition (étape 4) et chargez le contrôle de paiement (étape 5).Scott Mitchell a écrit un excellent article sur ce scénario: http://scottonwriting.net/sowBlog/posts/3962.aspx

Questions connexes