2009-08-19 2 views
0

Je suis actuellement en train de retravailler un processus d'assistant basé sur MultiViewControl pour notre application Web. J'ai du mal à comprendre l'ordre dans lequel les événements se produisent (Page_Load, Init, prerender, etc.). Est-ce que quelqu'un sur les interwebs a des détails sur l'un de ces contrôles? S'il vous plaît, ne dites pas simplement "google". Je l'ai fait et je n'ai pas encore trouvé un bon site complet.Problèmes de MultiViewControl

Il est vrai que je n'ai pas vraiment élaboré sur les problèmes que je vais avoir avec ce contrôle, donc je vais essayer de le faire:

  1. principal problème est l'initialisation de UserControls qui vivent dans différentes vues . Dans le codebase existant, le programmeur utilisait une combinaison de multiviewcontrol.ActiveViewIndex = WHATEVER et de Response.Redirect ("PageWithMultiView.aspx? Nextstep") et cela rendait tout cela très compliqué. Ma tâche consiste à tenter de supprimer les appels Response.Redirect et utiliser uniquement le paramètre de l'ActiveViewIndex. Est-ce seulement possible? En outre, il existe certains cas où j'ai besoin d'initialiser un contrôle dans une vue particulière uniquement sur la charge initiale et non sur les publications ultérieures. Je peux utiliser quelque chose comme le drapeau IsPostBack mais ce n'est que fausse sur la charge initiale. Les rechargements suivants sont IsPostBack == true. Je veux essentiellement avoir IsPostBack mis à false pour la charge initiale de chaque vue. Cela peut-il être fait sans faire de Response.Redirect à lui-même?

Espérons que cela aura un sens pour quelqu'un là-bas.

Merci. Greg.

Répondre

0

J'ai une période difficile essayant de du sens de l'ordre que les événements se produisent (Page_Load, Init, prerender, etc.).

Ici vous avez tous les détails sur le cycle de vie de la page ASP.NET et les événements: http://msdn.microsoft.com/en-us/library/ms178472.aspx.

En termes de MultiView - vous ne devriez JAMAIS utiliser Response.Redirect lorsque vous travaillez avec MultiView.

Si l'utilisateur ne peut pas passer à la vue précédente, vous pouvez vérifier la valeur ActiveViewIndex précédente avant de la définir sur la nouvelle valeur, par ex.

if (mv.ActiveViewIndex != newIndex) 
{ 
    // this view is displayed for the first time 
} 

Si l'utilisateur peut passer aux vues précédentes, je propose de placer une information sur les vues déjà utilisées en session ou en plaçant champ caché sur la forme avec ids des vues qui ont déjà été affichés et d'utiliser cette informations au lieu de IsPostBack.