Plusieurs formulaires sur une même page

Résolu
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007 - 23 avril 2005 à 12:59
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007 - 9 mai 2005 à 00:50
Bonjour à tous,

Petite question de méthodologie sans doute ... Comment faire pour avoir plusieurs formulaires sur une même page ?

Je m'explique : pour un cas simple déjà, sur une page d'accueil j'ai dans un coin un petit formulaire login qui comporte 2 textbox (login et password), un bouton "Login", et un bouton "Inscription". Ailleurs sur la page, j'ai un autre petit formulaire pour souscrire à une newsletter qui comporte un textbox pour l'email et un bouton "ok" pour envoyer la demande.

Ca fonctionnait très bien en ASP en faisant 2 blocs <form> </form>.

J'ai donc fait deux composants ASCX pour les réutiliser sur plusieurs pages. Problème, les deux sont du coup dans le même bloc <form> </form>. Facile de gérer l'évènement clic de chaque bouton pour qu'il fasse ce qu'il faut. Mais si l'utilisateur se met dans une textbox, tape son texte puis appuie sur "Entrée", comment savoir quel bouton sera cliqué ? Avant, c'était le bouton "submit" du form en question, mais maintenant il n'y en a plus qu'un, et il faudrait que sur appui sur "entrée" depuis login ou password, ce soit le bouton "login" qui soit cliqué, et sur "entrée" dans newsletter, ce soit le bouton "ok" qui soit cliqué... Et je ne peux pas utiliser l'évênement keypress des textbox sinon je fais un postback à chaque lettre frappée au clavier. Et ça me paraît une usine à gaz de faire un javascript qui va tester la touche utilisée pour chaque textbox ...
Quelle est la façon de faire pour retrouver la souplesse qu'on avait avant en "vrai" html avec l'asp ?

Merci d'avance !

Stéphane

7 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 avril 2005 à 22:07
deja tu n'es pas obligé de mettre un form dans un bloc form, car meme
en html ca ne passe pas (en théorie) il faudrais mettre tes ascx a
l'exterieur des balises form, mais le problème ne s'arretera pas la,
car en .net 1.1 c'est impossible, par contre en .net 2 ce sera
possible.



Pour ton problème il y a des textbox, qui possedent l'event
onMouseEnter fouille un peu sur le net ca doit etre facilement
trouvable - metabuilders.com de mémoire

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
3
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007
24 avril 2005 à 00:00
Salut Jesusonline,

Merci pour ta réponse. Comme tu le dis, il faudrait pouvoir mettre des contrôles en dehors du form runat=server ... En fait, il faudrait surtout pouvoir faire plusieurs forms runat=server dans la même page pour scinder les choses qui vont ensemble ...

Ceci dit, suite à ta remarque, j'ai un peu fouillé les nouveautés du .net 2, et j'ai comme le sentiment que le .net 1 est un produit bourré de défauts de jeunesse, une sorte de "premier jet" pour voir si ça prend auprès du public ... On a un peu le sentiment d'arriver au commencement d'un âge de maturité avec la v2 ...

Pour tout te dire, je suis pour le moment très déçu de devoir bricoler avec des javascripts et des évènements de souris ou de clavier (car on peut arriver dans un textbox avec la touche tab) pour essayer de retrouver quelque chose qui se faisait de façon évidente et claire avec l'asp ancienne mode ... Et puis quoi qu'il en soit, quand toute la page est une form, sans qu'aucun de ses contrôles n'ait le focus, l'appui sur la touche entrée provoque à tous les coups la validation sur le premier contrôle submit de la page. Alors qu'avant, il fallait avoir le focus sur une form en question pour que la validation se fasse ... C'était tellement plus propre ...

Qu'en penses tu ?

A+

Stéphane
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 avril 2005 à 02:07
Ce que j'en pense ?

c'est simple, asp.net est mon premier langage de programmation, je suis encore tout jeune (19ans) et j'apprend par moi meme, je n'ai jamais non plus touché à asp3, alors je ne sais pas comment ca fonctionne, mais il me semble pas que c'etait si poussé, et qu'il y avait quand meme pas mal de bidouilles, pas du meme genre qu'en asp.net mais tout de meme plein de bidouille.

Pour ce qui est de .net 2 c'est clair que la, il y a de l'amélioration, ca fait deja plusieurs mois que je bosse dessus, le produit commence à devenir stable (Ok, je viens tout juste de formater suite à un excés de beta :p) mais il y a pas mal de bonnes choses.

Ce qui faut voir c'est qu'on est libre de faire nos propres controles, alors un onkeyEnterPress sur un bouton, il n'y a pas beaucoup de bidouilles, c'est vrai qu'asp.net est jeune, mais on ne peut pas etre parfait du premier coup. En quelques années microsoft s'est fortement amélioré coté web.

Parmis les nouveautés de .net 2 qui pourrais t'interesser, il y a la possibilité de faire un control.focus, de mettre plusieurs form runat=server dans une meme page, d'arriver a recuperer les variables proprement de la page précedente (plus de request.form) etc...

autres grande nouveautés que j'apprecie gradement et qui m'est desormais indispensable : les master page, il y aussi le client callback qui se sert de la méthode ajax (plus de postback, pour certaines actions) etc... il y a plein de nouveautées.

Des que la beta 2 est officielement sortis, c'est à dire lundi, je mettrais a mes heures perdus (c'est à dire en ce moment jamais :d) des petits exemples & co


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
24 avril 2005 à 03:12
bonjour,

il existe toujours se bon vieux javascript

<script language="JavaScript">
function disableEnterKey(e)
{
var key;

if(window.event)
key = window.event.keyCode; //IE
if(key == 13)
return false;
else
return true;
}
</script>

Et pour la petite discussion, ASP.NET n'apporte pas énormément de nouvelles choses pour ceux qui ont beaucoup d'expérience en asp3.0. C'est compilé, c'est plus rapide, c'est objet,...
mais au niveau du développement en lui-même, si ont veux vraiment optimiser son application, il faut (entre autres) disablé le viewstate. Et sans viewstate, il faut tout refaire à l'ancienne... bref on verra avec asp.net 2.0.

yopyop
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007
9 mai 2005 à 00:04
Salut Jesusonline,

Je te remercie pour tes réponses, en fait, j'ai attendu de pouvoir récupérer la Beta 2 de VS 2005 pour faire quelques essais. A priori, j'ai déjà utilisé quelques nouveautés qui me semblent bien utiles, en particulier les Master Pages qui sont vraiment hyper pratiques !

Mais, j'ai toujours le même os : tu m'as dit : "il y a la possibilité de faire un control.focus, de mettre plusieurs form runat=server dans une meme page"

Or, quand j'en mets deux (des form runat=server), il me fait une exception "A page can have only one server-side Form tag"...

Est-ce que tu as déjà fait quelques essais ? Y'a-t-il quelque chose à changer dans une quelconque propriété ?

Merci ! A+

Stéphane
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 mai 2005 à 00:40
Arf j'ai du dire une connerie sur ce coup.

Je croyais avoir lu ca quelque part, mais apparement j'ai soit revé soit mal compris, je viens rapidement de tester et meme message que toi.

Ce que tu peux faire, c'est rapidement rajouté un event onEnterKeyPress a tes boutons, ca prend pas longtemps, et puis ca peut etre assez pratique :)

j'ai une source qui parle d'un truc comme ca .


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007
9 mai 2005 à 00:50
Salut,

Moi j'ai chopé un article chez MS :
http://msdn.microsoft.com/msdnmag/issues/03/05/CuttingEdge/default.aspx

Je vais lire ça et voir ce qu'ils proposent ... Ceci dit, je trouve ça pénible de la part de microsoft d'imposer cette unique Form par page ... Parce que le problème, c'est que du coup, même si le focus n'est dans aucun textbox, si l'internaute a le malheur d'appuyer sur Enter, c'est le premier bouton de la page qui est submité, et ça me plaît pas du tout ... Pire encore, dans une autre textbox de la page, c'est un autre bouton qui devrait être submitté en appuyant sur entrée, et on peut pas faire ... C'est quand même fou, on a l'impression de revenir en arrière ...

Si jamais t'as une info, je suis preneur ! Merci en tous cas !

A+

Stéphane
0
Rejoignez-nous