[ASP .net][C#] Probleme de postback après appui sur bouton

Signaler
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005
-
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005
-
bonjour,

je développe une application web en asp net et C#
j'utilise un placeholder sur ma page d'accueil
dans ce placeholder, j'appelle un user control qu correspond à une procédure d'authentification: on entre son login, son password et on clique pour valider
quand les données sont bonnes, ce bouton doit ré-afficher ma page d'accueil en passant en parametre l'url du nouvel user control à afficher dans le placeholder
j'ai donc 1 page aspx avec 1 placeholder qui peut appeler 2 user control différents suivant une variable

Mon problème vient du fait que quand je clique sur le bouton de validation (login pass), ça me fait un postback immédiat de ma page d'accueil
mon test de vérification n'est meme pas exécuté!
et je vois donc ma page d'accueil rappellée mais avec un placeholder vide!

comment se sortir de ce pétrain?
merci

ça peut toujours être pire

11 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
En fait, le problème vient que quand tu cliques sur le bouton, la page fait un postback sur la page, et comme tu instancie ton usercontrol par le code, tu vas instancier ton control aprés que lui ai pu aller chercher l'uc, je sais pas si tu vois le truc, mais met un point d'arret tu verras mieux le problème :p

la solution est de mettre tes 2 UC dans ta page, comme ca ils seront instancié des le debut de la requete, puis tu fais un visible = true ou false suivant les cas ...

à noter qu'en .net 2 il y a un control de sympa qui fait juste ca, il s'appelle le multiview je crois :) ca evite juste de mettre à chaque fois tous tes visible à false excepté un ...


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

pour tenter de résoudre le schimlblick, j'ai inséré mes 2 usrctrls dynamiquement
pb:
pour mon premier usrctrl, il me signale à l'execution qu'il faut une balise form runat=server pour encadrer ma balise asp:label
sympa mais quand je lui mets, il rale car pour lui y'a deux balises form !
(surement celle de webform1;aspx et la nouvelle)
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

truc de plus:
c le fait d'avoir un bouton dans un usercontrol dans un placeholder?
ou simplement le fait d'avoir un bouton dans un usercontrol?
qui provoque le postback...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
mais pourquoi veut tu absolument mettre tes UC dynamiquement ?

tu met dans le code

puis dans ton code, au lieu de faire un me.controls.Add(chose1) tu fais un chose1.visible = true

la je vois vraiment pas pourquoi tu as envie de te compliquer la vie ! ?


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

"envie de te compliquer la vie "
ah pk visual est compliqué parfois ! (lol)

j'ai donc fait ce que tu me conseilles dans ton dernier post mais
si je fais chose1.visible = true
chose 1 est introuvable pour Mr Visual !
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
il faut declarer chose1 dans le code de ta classe

protected withEvents chose1 as Chose

ce petit "problème" n'est plus d'actualité dans Visual Studio 2005


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

je suis en c#
donc j'ai regardé l'équivalent de withEvents:
c [event] += New System.EventHandler([eventHandler])

chtit souci:
- quel événement je mets?
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
protected Chose chose1;

puis vu que tu te sert pas des events de ton controle t'as pas besoin de mettre un withEvents ou de t'abonner aux events ...

regarde ce qu'ecrit pour toi VS pour mieux comprendre ...


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

ça y est j'y suis presque, grace à toi
donc quand je rentre les bons login et pass, je mets un this.Visible = false;
pour le userctrl d'authentification
quand la page d'accueil est rechargée je lui dit dans le code de cette meme page:


if(
this.WbUsrCntrlAccueilAuthentif1.Visible ==
false)

this.WbUsrCntrlPresentation1.Visible =
true;

le souci c qu'après verif, la condition n'est pas vérifiée

question pkoi? puisque je viens de le mettre à false, il croit qu'il est encore à true!
comme dans le html en somme.
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
c'est exactement le meme problème qu'avant, quand tu as un postback, ce qu'il faut comprendre c'est que la page est entierement rechargé, comme si c'etait la premiere requete de la page ... montre moi ton code, si tu veux que je t'explique plus en détail ...


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
27
Date d'inscription
jeudi 3 juillet 2003
Statut
Membre
Dernière intervention
28 juin 2005

quand on clique sur le bouton de validtion dans le usercontrol d'authentification

if(VerifierIdentite(txtbxIdentifiant.Text,txtbxPassword.Text))
this.Visible = false;
else
AfficherMessage("Identification Erronnée");

dans la page d'accueil:


private void Page_Load(object sender, System.EventArgs e)
{
if(this.WbUsrCntrlAccueilAuthentif1.Visible == false)
this.WbUsrCntrlPresentation1.Visible = true;
}

merci de ton aide