ASP.NET : problème de form

Bonjour à tous,
voilà, pour un projet je fais un site genre portail. C’est mon premier projet en ASP.net et j’ai un soucis.
J’adore le gestion des forms, surtout comme je peux appeler une fonction très facilement lorsqu’un évènement donné se produit. Mais voilà, je crois pour que je puisse faire ça, il doit être en runat=“server”. Le hic, c’est que je ne peux pas avoir plus d’un form à la fois côté serveur.
J’ai sur le côté gauche un form de login et évidemment parfois dans le contenu il arrive de croiser un form. Et vu qu’il y en a 2, le serveur me sort l’erreur :
System.Web.HttpException: A page can have only one server-side Form tag.

C’est moi qui suis pas très malin ou alors on ne peut réellement pas avoir 2 forms sur la même page en utilisant les facilités de .net ?

Merci d’avance,
Nicjac
Ce message a été édité par Nicjac le 23/04/2004

Tu as vraiment besoin que d’un seul formulaire, ca empeche pas d’avoir des users controls qui font leur propre cuisine en reponse a un postback mais dans une page HTML, pourquoi tu aurais besoin de plus d’une FORM? Un seul suffit a priori et on peut tout faire avec un seul. Ton user control pour se loguer gere le postback quand le bouton est clique, le reste de la page gere son bordel. C’est juste que c’est une mauvaise architecture de mettre trop de choses dans le Page_OnLoad, et qu’il vaut mieux le mettre en reponse a des actions specifiques…

Donc en gros je dois créer un user controler pour chaque formulaire et utiliser la méthode postback pour qu’ils gèrent leur truc tout seuls ?

Nop, tu n’auras qu’un seul formulaire, avec dedans, autant d’user control que tu veux…

Bon j’ai lu de la doc sur le net et je suis encore plus perdu qu’avant. Tu pourrais m’expliquer vite fait comment faire pour avoir au moins 2 formulaires en même temps ? Genre sur cafzone lorsque tu as le formulaire de côté forum + celui d’ajout d’un post, comment tu fais pour les gêrer ?
Lorsque je met pas de runat=“server” je n’arrive pas à “capturer” l’évènement genre click sur le bouton submit. Donc c’est là que je suis perdu.

[quote]Nop, tu n’auras qu’un seul formulaire, avec dedans, autant d’user control que tu veux…[/quote] Donc en gros j’ai une balise au début de ma page et à la fin et je peux ajouter les contrôles entre les deux ? Mais à ce moment là je vois pas comment je peux “capturer” l’évènement que les formulaires produisent =/

Je comprend pas l’histoire de la capture de l’évènement.

Tu auras un bouton submit dans ton formulaire. A partir de là tu peux appeller les évènements qui t’interesse.

Je suis pas sur d’avoir compris. Ce qui t’interesse c’est, lors du submit, qu’un user control fasse quelque chose, et qu’un autre user control fasse autre chose ?

Désolé suis assez nouveau en asp.net donc mes termes sont certainement incorrectes.
Ce que je voudrais, c’est avoir 2 formulaires :

  • Un pour le login de l’utilisateur
  • Un pour faire une recherche sur le contenu

Lorsque l’utilisateur clique sur le bouton “Login”, l’application doit vérifier ce qu’il a entré. Ca je le fais en utilisant la propriété onClick qui appelle une fonction définie dans le bloc script . Donc je voudrais pouvoir faire ça pour le 2ème formulaire, celui de recherche, mais vu que je peux pas le déclarer comme runat=“server” ben la fonction onClick ne va pas fonctionner.
Ce message a été édité par Nicjac le 24/04/2004
Ce message a été édité par Nicjac le 24/04/2004

Ben t’as 2 boutons. Un pour le login, l’autre pour la recherche.
C’est des boutons de type

Quand tu vas cliquer l’un tu vas générer l’évènement associé, quand tu clique sur l’autre c’est pareil.

Je précise.
Tu inclus ton bouton de login dans le user control du login.
Tu inclus ton bouton de recherche dans le user control de recherche.
Tu crée la methode onclick pour le bouton de login dans le code de ton user control de login. Pareil pour la recherche.

Et tout se fait tout seul.
Ce message a été édité par Xas le 24/04/2004

Il faut que j’appelle les 2 contrôles dans une balise run at server quand même non ? edit : ça avait bouffé le runat server =/
Ce message a été édité par Nicjac le 24/04/2004

Bon ça merde toujours, bien que j’ai plus l’erreur liée aux forms…
J’ai fait un user control pour le formulaire de login. J’ai mis une balise “form runat=server” au début de la page et une “/form” à la fin.
Je n’ai pas d’erreur mais un bug étrange. Sous safari ou mozilla, quand je clique sur OK, c’est bon, ça check le login et tout. Alors que sous IE, j’ai beau cliquer sur le bouton OK, ben rien à faire, ça marche pas.
Une petite idée ? =/

Je conclue mon monologue : j’ai trouvé =)

Enfin donc lecon a retenir: ASP.Net 1.x, 1 seul fromulaire par page. Toujours.