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 :

De GET vers POST ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut De GET vers POST ?
    Bonjour bonjour.
    Voila, j'ai deux problème. Le premier c'est que je suis pas doué avec l'ASPX...

    Le second est le suivant :
    J'ai une page mapage.aspx, comme toute les pages aspx, elle contient un formulaire qui englobe la totalité de la page. Dans le CodeBehind il s'appel MasterForm.

    Cette page affiche un tableau de données filtrables. Donc j'ai fait un petit formulaire pour faire les recherches. Quand je l'utilise, les données partent en POST. Et c'est ce que je veux, je ne veux pas de GET. Seulement voila, dans certains cas, on doit pouvoir envoyer des "lien préfiltrés" a des clients. Et donc la c'est du GET.
    Genre "http://mondomaine.fr/mapage.aspx?ni=M123456".

    Donc ca c'est facile à gérer, puisque dans le Page_Load j'arrtibut les valeurs passée en GET dans le controle. Ca marche super bien. Sauf que, quand on accède a une page via ce lien, l'action du MasterForm devient "mapage.aspx?ni=M123456" et ca c'est pas bien du tout. Car du coup, le formulaire de recherche ne fonctionne plus. Puisque les données seront bien postée, mais à l'URL qui contient le GET et donc les données en POST seront écrasée par les données en GET.

    Je voudrais garder cette "priorité" du GET sur le POST.

    Du coup, comment faire ? Je n'arrive pas à changer le "action" du MasterForm, MSDN dit qu'on ne peux pas de toute façon. Donc j'aimerai, en gros, sur le Page_Load transformer les données GET en POST, puis faire un redirect vers la page (un peu comme si je repostait le formulaire, mais en virant la QueryString).

    Des suggestions ?

    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    dans le Load, tu peux modifier l'action de la form pour supprimer les paramètres passés en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i = MasterForm.Action.IndexOf('?');
    if (i >= 0)
        MasterForm.Action.Substring(0, i);

  3. #3
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Citation Envoyé par tomlev Voir le message
    dans le Load, tu peux modifier l'action de la form pour supprimer les paramètres passés en GET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i = MasterForm.Action.IndexOf('?');
    if (i >= 0)
        MasterForm.Action.Substring(0, i);
    Oui, alors ca justement, j'avais testé. Sur mon serveur de teste (machine Vista 32bits), avec Visual Studio 2005, quand j'écris ca, ca passe en debug, sans aucun problème.
    Mais une fois publié sur le serveur (Windows 2000 32bits, mais avec la même version du framework évidemment), ca me lance une exception MissingMethod, comme quoi set_Action n'est pas une méthode de System.Web.UI.HtmlControls.HtmlForm. Et en effet, quand je fait "F1" sur MasterForm.Action, la page d'aide MSDN trouvée m'indique que cette propriété n'existe pas.
    De plus, quand je regarde la page d'aide du contrôle HtmlForm (ce qui définit les attributs acceptés dans le code "HTML", c'est noté : "L'attribut action a toujours pour valeur l'URL de la page elle-même. L'attribut action ne peut pas être modifié ; par conséquent, vous ne pouvez publier que sur la page elle-même."

    (Au passage, plus simple que ce que tu as noté, j'avais fait "MasterForm.Action = Request.Path;")

    J'ai eu exactement le même problème de méthode manquante sur les paramètres d'un SqlDataSource. Pendant le debug, ca marchait nikel, mais une fois publié, il me sortait une exception car il manquait une surcharge de la méthode, évidemment celle que j'utilisais, sinon ca n'aurait pas été drole

    edit: correction dans la version du système de dévelopement ... ^^'

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ctxnop Voir le message
    mais avec la même version du framework évidemment
    Tu es sûr ? y compris les service packs ?
    Par ce que dans la doc de la propriété HtmlForm.Action, je vois ça :
    Version Information
    .NET Framework

    Supported in: 3.5 SP1, 3.0 SP2, 2.0 SP2
    C'est donc une modification très récente... ton environnement de dev est à jour, mais peut-être pas l'environnement de production

  5. #5
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tu es sûr ? y compris les service packs ?
    Par ce que dans la doc de la propriété HtmlForm.Action, je vois ça :


    C'est donc une modification très récente... ton environnement de dev est à jour, mais peut-être pas l'environnement de production
    Moi je suis en framework 2. Je sais que j'ai le framework 3 d'installé, mais j'ai bien configuré mon IIS pour qu'il prenne mon framework 2. Idem pour le visual studio. Mais ca expliquerai que ca fonctionne en debug mais pas en publié. La question est-donc, comment faire la même chose mais en framework 2 ??

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ctxnop Voir le message
    La question est-donc, comment faire la même chose mais en framework 2 ??
    Tu n'as pas bien lu l'extrait de la MSDN que j'ai posté... c'est supporté en framework 2, mais il faut intaller le service pack 2

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/12/2011, 11h18
  2. Réponses: 3
    Dernier message: 08/03/2009, 10h50
  3. Récupération de variable par GET et POST
    Par Sophy75 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2006, 14h35
  4. GET vers POST
    Par BoeufBrocoli dans le forum Langage
    Réponses: 16
    Dernier message: 20/03/2006, 17h34
  5. Requête GET ou POST sans formulaire.
    Par etiennegaloup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/10/2005, 09h58

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