IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Tester <ASP:bouton> avec javascript puis C#


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut Tester <ASP:bouton> avec javascript puis C#
    Bonjour

    je développe mon site perso sous asp.dot net avec C#

    J'ai une page d'accueil sur laquelle j'ai la possibilité de me connecter avec un pseudo et un MDP (mot de passe) pour accéder à certaines fonctionnalités. Un bouton validation me permet logiquement de tester ces deux paramètres (pseudo et MDP) au travers d'une base de données et des connexions liées.

    le code du bouton est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="submittConnect" runat="server" OnClientClick="TestString()" CssClass="BtnSeConnecter" Text = "Se connecter" Width = "75px" />

    Premier test : en JavaScript, je test un minimum les deux paramètres à l'aide de TestString(), avant de vouloir lancer une requête plus aboutie vers le serveur et sa base de données; ceci fonctionne bien (code à dispo)

    problèmes :

    1 - Après le test javascript, sur le contenu des deux paramètres (pseudo et MDP), comment lancer la suite de la validation du coté serveur ? comment passer de Javascript (client) vers C# (serveur) ? Un simple nom de fonction ?
    Y aurait-il plutôt une autre manière d'aborder ces tests ?

    2 - Le bouton ASP utilisé est inclu dans une cellule d'un tableau ASP lui aussi. Normalement, pour entrer dans l'évènement onclick du bouton ASP, je double clique sur le bouton et je suis automatiquement redirigé vers le code behind dudit bouton. Mais dans le cas présent, seul le tableau ASP est sélectionné quand je (simple/double) clique sur le bouton. Ceci est apparemment toujours le cas avec des objets ASP inclus les uns dans les autres. Je peux bien sûr saisir manuellement le code behind dans le document.aspx.cs du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void submittConnect_Click(object sender, EventArgs e)
            {
                TextBox.Text = "cnx ok...";
            }
    mais y aurait-il une autre manière de travailler ?

    3 - Avec le code ci-dessus, et la fonction javascript dans la page HTML.aspx, seul le code JavaScript est utilisé sur mon site ! Le code behind n'est pas exécuté et aucune erreur n'apparait pourtant. Le but est quand même d'effectuer d'abord le code javascript pour tester le contenu des zones saisies, puis, si tout se passe bien, le code behind coté serveur pour la validité du pseudo et de son mot de passe.
    Quelle est l'erreur de raisonnement ici ?



    bon dimanche à tous


  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 26
    Points
    26
    Par défaut
    Bonjour Helpi,

    Je ne sais pas si j'ai bien compris ton problème mais je pense qu'il faut lier ton évènement onclick et ta méthode "submittConnect_Click"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:Button ID="submittConnect" runat="server" OnClientClick="TestString()" OnClick="submittConnect_Click" CssClass="BtnSeConnecter" Text = "Se connecter" Width = "75px" />

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Est-ce que tu as lu cette section de la FAQ au sujet des validators?

    A+

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Discovery312 Voir le message
    Bonjour Helpi,

    Je ne sais pas si j'ai bien compris ton problème mais je pense qu'il faut lier ton évènement onclick et ta méthode "submittConnect_Click"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <asp:Button ID="submittConnect" runat="server" OnClientClick="TestString()" OnClick="submittConnect_Click" CssClass="BtnSeConnecter" Text = "Se connecter" Width = "75px" />
    merci de ta réponse, je vais tester cela dès demain matin ...

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Salut,

    Est-ce que tu as lu cette section de la FAQ au sujet des validators?

    A+
    merci de ta réponse. Je ne souhaite pas utiliser les validators HTML pour cette partie de code là. Je l'utilise déjà pour une autre page et ça marche effectivement très bien. Mon souhait est réellement d'utiliser du javascript puis du C# après la première validation.

    J'espère bien sûr que cela est possible

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par Hepil Voir le message
    Mon souhait est réellement d'utiliser du javascript puis du C# après la première validation
    Je comprend pas ton besoin.

    1. Le javascript sert à vérifier que la saisie est conforme au pré requis (nombre de caractères par exemple)
    2. Si la saisie est bonne le formulaire est soumis. A partir de là c'est le serveur qui prend le relais => ton code C#.
    Je comprend pas pourquoi tu n'utiliserais pas un validator. Que fait ta fonction "TestString()"?

    Dans le cas d'une authentification, ce n'est pas au javascript de se prendre pour du C# et de vérifier l'authentification.

    D'un point de vu général, une appli web devrait fonctionner sans javascript. Le javascript améliore l'experience de navigation de l'internaute, c'est tout.

    A+

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    ...

    1. Le javascript sert à vérifier que la saisie est conforme au pré requis (nombre de caractères par exemple)
    2. Si la saisie est bonne le formulaire est soumis. A partir de là c'est le serveur qui prend le relais => ton code C#.
    OUI : c'est justement ce que je veux faire ! utiliser en premier JavaScript pour effectuer quelques petits tests (nombre de caractères, zones vides ..) comme le feraient les contrôles VALIDATOR de manière transparente ou presque.
    Mais c'est le "ENSUITE" qui me pose un souci. quand le 1er test JavaScript est OK, il faut que je lance le test (ou code) C#. Comment faire ? Comment appeler le C# par le JavaScript ?

    Citation Envoyé par Immobilis Voir le message
    Je comprend pas pourquoi tu n'utiliserais pas un validator. Que fait ta fonction "TestString()"?

    Dans le cas d'une authentification, ce n'est pas au javascript de se prendre pour du C# et de vérifier l'authentification.
    La raison de la présence du javaScript en lieu et place du Validator est aussi un chalenge technique qui me sera utile pour d'autres entités codées par la suite. Autant que je le résolve là maintenant

    La fonction TestString() vérifie sommairement et simplement que les chaînes soient non vides et " != null " dans un 1er temps. D'autres test plus rigoureux seront ajoutés dès que cela fonctionnera. Je sais bien qu'on peut faire ces 2/3 tests simplement avec les contrôles VALIDATOR

    Citation Envoyé par Immobilis Voir le message
    D'un point de vu général, une appli web devrait fonctionner sans javascript. Le javascript améliore l'expérience de navigation de l'internaute, c'est tout.
    A+
    A mon sens, le JavaScript est fort utile pour éviter les aller - retrour client/serveur. De plus, il me sera aussi nécessaire pour des fonctionnalités AJAX ultérieures

  8. #8
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    bonjour,

    les validator que tu defnis dans ta apge seront transforme en javascript lors de l'execution de ta page si tu le souhaites.

    Par ailleurs, les validators te permettront de valider les informations de ta page une premiere fois cote client avant d'autoriser la apge a revenir vers le serveur.

    Lorsque ta page reviendra vers le serveur, on appelle cela un postback, tes validateurs pourront a nouveau etre checké pour etre sur que tout va bien.

    Grace à l'evenement onclick=mafonction que tu auras placé dans le bouton pour soumettre ton formulaire, tu pourras effectué d'autes traitements si tu les juges utiles.

    Si certaines choses te semblent obscures dans ce que j'ai pu ecrire, je ne peux que te conseiller l'examen attentif et scolaire des faq dot net et des cours d'initiation.

    Bon code à toi,

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    merci de cette explication

    Je pense pouvoir me débrouiller à présent, mais :

    Si j'ai bien tout compris, les VALIDATOR et le code javascript que l'on peut écrire dans la page HTML sont exécutés avant le postback vers le server. D'autant que les VALIDATOR créent aussi du javaScript.

    Le code javascript inséré manuellement est appelé par une "function" suite à l'évènement "onClientClick" alors que le code C# (code behind) sera appelé grâce à l'évènement "onClick".

    Comme le proposait hier Discovery312 :
    Code :

    <asp:Button ID="submittConnect" runat="server" OnClientClick="TestString()" OnClick="
    Après un test simple (proposé par Discovery312), le code javascript (onClientClick) est bien appelé et exécuté AVANT le code behind (évènement onClick)

    Pour répondre à mon besoin, il faut encore que je n'exécute le code behind QUE SI le code javaScript (en manuel ou par les VALIDATOR) l'autorise.
    Les VALIDATOR savent gérer cela automatiquement et intrinsèquement. Je n'ai plus qu'à trouver comment.

    Serait-ce "AutoPostBack" ou faut-il passer par une variable de session ?

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Hepil Voir le message
    merci de cette explication

    Je pense pouvoir me débrouiller à présent, mais :

    Si j'ai bien tout compris, les VALIDATOR et le code javascript que l'on peut écrire dans la page HTML sont exécutés avant le postback vers le server. D'autant que les VALIDATOR créent aussi du javaScript.

    Le code javascript inséré manuellement est appelé par une "function" suite à l'évènement "onClientClick" alors que le code C# (code behind) sera appelé grâce à l'évènement "onClick".

    Comme le proposait hier Discovery312 :


    Après un test simple (proposé par Discovery312), le code javascript (onClientClick) est bien appelé et exécuté AVANT le code behind (évènement onClick)

    Pour répondre à mon besoin, il faut encore que je n'exécute le code behind QUE SI le code javaScript (en manuel ou par les VALIDATOR) l'autorise.
    Les VALIDATOR savent gérer cela automatiquement et intrinsèquement. Je n'ai plus qu'à trouver comment.

    Serait-ce "AutoPostBack" ou faut-il passer par une variable de session ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClientClick="return TestString()"
    Et ta fonction js doit retourner true ou false si validation ok ou non

  11. #11
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnClientClick="return TestString()"
    Et ta fonction js doit retourner true ou false si validation ok ou non
    Ceci équivaut à :

    onClientClick = true
    ou
    onClientClick = false

    j'ai pas trop compris là ...


    en fait, ce que je vois c'est :
    si {return (onClientClick) = true} alors {onClick() } sinon {"Erreur de saisie"}

    Deux possibilités :

    Ce test se fait en javascript du coté client et évite d'aller sur le serveur (great)
    ou ce test s'effectue (malheureusement) sur le serveur via une variable de session (ou autre ?) crée et envoyée par le test javascript

    Je cherche déjà la création d'une variable de session sous javaScript et j'ai trouvé cela :

    creation of a session variable with javaScript

    Autre idée ?

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Hepil Voir le message
    en fait, ce que je vois c'est :
    si {return (onClientClick) = true} alors {onClick() } sinon {"Erreur de saisie"}
    C'est ce que mon code fait

  13. #13
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    C'est ce que mon code fait
    je ne comprends pas :

    tu associes une variable boolean à un évènement

    APRES TEST, ça marche mais je ne sais pas pourquoi ...

    Ca pourrait signifier que le run de l'évènement onCLick dépend automatiquement du résutat "boolean" de l'évènement onClientClick, s'il est retourné et s'il est utilisé ?

  14. #14
    Membre expérimenté Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Points : 1 352
    Points
    1 352
    Par défaut
    tu as tout compris.

  15. #15
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par Arthis Voir le message
    tu as tout compris.


    je comprends vite mais il faut m'expliquer longtemps ...

    aide supplémentaire M$ :

    script client qui gère l'événement OnClientClick

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Donner une valeur de bouton HTML avec Javascript
    Par xlink dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/12/2014, 10h03
  2. Réponses: 1
    Dernier message: 13/08/2013, 00h03
  3. Dérouler un ASP.NET TreeView avec Javascript
    Par eddynamique dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/02/2013, 13h57
  4. problème d'affichage d'alert avec javascript puis redirection
    Par ikramta dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/03/2009, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo