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 :

Récupération d'une variable JavaScript en code behind


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 275
    Points : 185
    Points
    185
    Par défaut Récupération d'une variable JavaScript en code behind
    Bonjour,

    Je cherche à récupérer la valeur de mon paramètre JavaScript en code Behind.
    Sur le clique d'un bouton, je pose une question qui doit me retourner oui/non.
    Sous IE 7
    -- Je récupére bien le contenu de mon paramètre. Mais le page_load est appelé 2 fois. Et c'est sur le 2 éme passage que le paramètre est bien initialisé.
    Sous FireFox
    -- Le page_load est appele une seul fois et de ce fait le contenu de mon paramètre est nul.

    Comment faire pour que cela fonctionnne sous les 2 navigateurs ?
    Attention la propriété validateRequest doit rester à false.

    Code JavaScript dans ma form ASPX.
    Les propriétés de ma form EnableEventValidation="true" validateRequest="false"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <script type="text/javascript">
     
        function DoMessage() 
        {
            if (confirm("Voulez vous créer une demande sur tous les éléments la liste?") == true) 
            {
                ParametrePostBack = 'true';
            }
            else 
            {
                ParametrePostBack = 'false';
            }
            // Renvoie un postback en indiqant la provenance via le bouton BtnCreerDemandeElements avec le paramètre
            setTimeout("__doPostBack('BtnCreerDemandeElements','" + ParametrePostBack + "')", 0);
        }
    </script>
    Code behind C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    	protected void Page_Load(object sender, EventArgs e)
        {
    		if (IsPostBack)
    		{
    			string MonControlParametre  = Page.Request.Params["__EVENTTARGET"];
                    if (MonControlParametre.ToUpper() == "BTNCREERDEMANDEELEMENTS")
                    {
                        string Parametre = Page.Request.Params["__EVENTARGUMENT"];
                        if (Parametre.ToUpper() == "TRUE")
                        {
                            Mon traitement
                        }
                    }
    		}
    	}

  2. #2
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Salut
    ca ne répondra surement pas précisément à ta question, mais à mon avis tu te compliques la vie : ca serait plus facile d'utiliser un truc du genre de ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:textbox visible=false runat=server enableviewstate=true id=idTextbox></asp:textbox>
    -> Comme la textbox est en mode visible=false, elle restera invisible à l'utilisateur

    -> Tu en actualises le contenu en JS facilement (document.getElementById...)

    -> tu en récupères la valeur au moment du postback avec idTextbox.Text



    bye
    Nico

  3. #3
    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
    Un control avec Visible=false n'est pas rendu au client

  4. #4
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 275
    Points : 185
    Points
    185
    Par défaut
    Merci de ta réponse,

    J'ai pensé à faire ça. Mais cela ne fonctionne pas.

    Mais je voulais d'abord connaitre mon erreur.
    Et j'aimerai toujours bien comprendre.


    Cyril

  5. #5
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Salut lutecefalco,

    Citation Envoyé par lutecefalco Voir le message
    Un control avec Visible=false n'est pas rendu au client
    c'est pas ce que j'ai marqué au dessus ?

    bye
    Nico

  6. #6
    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 Nicopilami Voir le message
    Salut lutecefalco,



    c'est pas ce que j'ai marqué au dessus ?

    bye
    Nico
    Tu dis qu'elle sera invisible mais tu sous-entends qu'elle sera présente dans le code html (sinon comment la manipuler en javascript?)

  7. #7
    Membre averti Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 339
    Points
    339
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Tu dis qu'elle sera invisible mais tu sous-entends qu'elle sera présente dans le code html (sinon comment la manipuler en javascript?)
    Bien vu, autant pour moi (je suis au boulot et je bosse en parallele)
    je voulais en fait faire un
    <input id="toto" runat="server" type="hidden" />
    qui là devrait pouvoir etre actualisé en JS et récupéré par le serveur par un toto.Text au moment du Postback;

    Cela dit, ca ne résout pas la question de savoir pourquoi le code initial ne fonctionne pas du premier coup

    bye
    Nico

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    @cyril: la seule chose que tu veux passer, c'est "true" ou "false"? car si c'est le cas, tu as pris le problème à l'envers et tu vas essayer de trouver une bidouille alors qu'il n'est pas nécessaire de le faire.


    un simple bouton basique fait l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button runat="server" Id="pwet" OnClick="button_click" OnClientClick="return DoMessage()">
    niveau JS, ca donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function DoMessage()
    {
       return confirm('Voulez vous créer une demande sur tous les éléments la liste?');
    }
    et strictement RIEN de plus. chaque fois que le mec répondra "non", ca ne lancera pas le postback. s'il répond "oui", ca lance le postback et l'action de ton bouton. donc:
    1- t'inventes pas une solution bidouille crado pour récupérer une valeur javascript

    2- t'auras pas ton problème de double postback car ton code métier
    tu le fous dans le button_click.

    3- tu vas voir, tu réduis le code javascript en une ligne au lieu de dix, et le code behind en trois lignes au lieu de 10.

    et là tu fais du Web, du vrai

  9. #9
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 275
    Points : 185
    Points
    185
    Par défaut
    Merci de ta réponse.
    Elle fonctionne très bien.
    Cyril

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut


    à noter, que le return confirm('blabla'); tu pourrais le mettre directement dans le OnClientClick, pour éviter de faire une méthode JS d'une seule ligne. je l'ai laissé:
    1- pour montrer l'exemple si un jour tu veux une méthode plus complexe
    2- parce que j'ai oublié tout simplement

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

Discussions similaires

  1. Récupérer une variable javascript dans code behind c#
    Par zakarinalaw dans le forum jQuery
    Réponses: 4
    Dernier message: 17/02/2014, 08h39
  2. Récupération d'une variable javascript dans une feuille XSL
    Par drakkar64 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/08/2008, 17h56
  3. récupération d'une variable Javascript en asp
    Par martala dans le forum ASP.NET
    Réponses: 6
    Dernier message: 29/02/2008, 10h08
  4. Appellé une fonction javascript en code behind
    Par 0xYg3n3 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/10/2007, 15h02

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