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 :

Communication client/serveur avec ASP.NET


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut Communication client/serveur avec ASP.NET
    Bonjour à tous ,



    j'ai une petite question à vous poser.

    J'ai commencé une application web en ASP.NET (web forms simple(je n'utilise pas MVC qui me semble un peu compliqué)) avec un code behind en C# et du jQuery pour faire quelques effets interessants.

    Dans ma page web, je dispose de quelques controls et d'un tableau de type <asp:Table> qui contient des données chargées à partir de mon code behind C# qui communique avec une base Oracle.

    Le tableau se charge correctement. Maintenant, j'aimerais faire des opérations sur ma base de données à partir de ma page. Cependant, je ne sais pas exactement comment m'y prendre lol. Je ne sais pas trop comment communiqué avec le serveur. J'ai peut-être deux solutions mais pour chacune d'entre elles je ne sais pas trop comment continuer ou si je pars dans la bonne direction.

    1/ ASP.NET AJAX, seulement ma page ne contient aucun UPDATE PANEL ou de SCRIPT MANAGER donc je ne sais pas ce que je pourrais faire avec ça.

    2/ jQuery.ajax() et WebMethod : J'ai réussi à envoyer des données avec ajax à une WEBMETHOD comme dans le code suivant :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [WebMethod]
            public static string doAssignation(string request)
            {
                return request;
            }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $.ajax({
            type: "POST",
            data: "{ request : " + JSON.stringify(listeIdEntiere) + "}",
            url: "Test.aspx/doAssignation",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg.d);
            },
            error: function () {
                alert("BAD");
            }
        });
    Cependant, même si j'arrivais à faire des modifications dans la base avec cette WEBMETHOD, je ne sais pas comment faire un postback pour recharger ma page et ainsi mettre le tableau à jour.

    J'espère que l'un d'entre vous aura une idée pour m'aider merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Peut-être aussi une solution du côté des WCF mais je ne connais pas non plus :/

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Une solution est de créer un bouton dans la page qui ne sera pas visible et quand tu as besoin de faire ton postback pour recharger ces données tu click dessus par l'intermédiaire de Jquery.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    en passant par cette méthode c'est à toi de gérer le raffraichissement de la page, donc dans ta fonction doAssignation tu retourne le résultat (en json par exemple) et tu mets à jour ta page dans la fonction success


    Cordialement

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci pour vos réponse
    Donc dans mon success, je simule un clique sur un bouton pour qu'il fasse le postback merci je pense que ça va marcher, il fallait y penser.
    N'y a t-il pas un moyen plus officiel de faire un postback avec jQuery ?
    Non pas que ça m'embête d'utiliser un bouton mais simplement pour élargir mes connaissances lol
    Encore merci

  6. #6
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    j'ai l'impression que c'est mélangé tout ça, si tu fais de l'ajax c'est justement pour éviter le postback

    NON NON et NON !!!

    Donc dans mon success, je simule un clique sur un bouton pour qu'il fasse le postback merci je pense que ça va marcher, il fallait y penser.
    dans ton success tu mets à jour ton formulaire en javascript en utilisant les infos retournées par doAssignation :
    success: function (msg, result)

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Ah oui mais ça risque d'être un gros flux d'information renvoyé par ma webmethod. Ne serait-ce pas plus rapide de rafraîchir la page avec un postback ?
    Désolé si je ne comprends pas

  8. #8
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    pas de pb,

    normalement un appel à une web method est beaucoup plus économique que le postback, le postback recharge l'intégralité de la page tandis qu'avec un appel en ajax tu renvoies uniquement les données à mettre à jour, après c'est à toi de mettre à jour la page

    mais si ça devient trop compliqué tu peux utiliser un update panel qui fera tout ça pour toi

    Cordialement

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci.

    Justement UpdatePanel me semble très compliqué. J'avais essayer de l'utiliser mais je n'avais pas du tout compris la logique.

    Donc tu penses que je devrais essayer de formater mes données changées sous forme de XML pour que je puisse les récupérer en Javascript ?

    Edit : Au passage, on ne peut pas utiliser les Sessions avec WebMethods, non ?

  10. #10
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    utilises plutôt json, c'est le format de données le plus facilement manipulable en javascript

    pour l'update panel y'a pas plus simple, tu colles tes objets dedans (la grille, les textbox) ainsi que le bouton de validation (celui qui fait le postback) et tu verras que seul ton update panel est raffraichi

    Cordialement

  11. #11
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    Edit : Au passage, on ne peut pas utiliser les Sessions avec WebMethods, non ?

    [WebMethod(EnableSession = true)]

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci pour les conseils sur l'update panel, je vais peut-être ressayer parce que ça pourrait m'être utile pour d'autre chose

    Par contre je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [WebMethod(EnableSession=true)]
            public static string doAssignation(string numOF, string codeComp)
            {
                string reqTabD = Session["reqHU"].ToString();
     
                return reqTabD;
            }
    Mais il me dit :
    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'System.Web.UI.Page.Session.get'

    Tu as une petite idée ?

    Edit: et si je retire static de ma méthode, mon appel ajax() ne va plus dans le success...

  13. #13
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    non là je sais pas, je te passe un début de web method que j'utilise

    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data;

    namespace Dossier
    {
    [WebService(Namespace = "http://tototutu.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    public class WBS_tarif : System.Web.Services.WebService
    {
    [WebMethod(EnableSession = true)]
    public String tarif(String TAR_id, String TAL_zone, String TAL_poids, String ligne)
    { ...

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci donc je peux voir que ta WebMethod n'est pas static. Tu arrives à faire un appel ajax() de ce genre avec ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $.ajax({
            type: "POST",
            data: "{ numOF : " + JSON.stringify(numOF) + " , codeComp : " + JSON.stringify(codeComp) + "}",
            url: "Test.aspx/doAssignation",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg.d);
            },
            error: function () {
                alert("BAD");
            }
        });

  15. #15
    Membre actif
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Points : 213
    Points
    213
    Par défaut
    je passe pas par jquery et j'utilise des fichiers .asmx et pas .aspx, les .asmx c'est les web services ancienne techno, maintenant c'est remplacé par wcf, mais asmx ça marche très bien

    ça c'est pour déclaré le web service dans le projet
    <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="true">
    <Services>
    <asp:ServiceReference Path="WBS_tarif.asmx" />
    </Services>
    ...
    l' appel en javascript
    function appel_tarif {
    ...
    Dossier.WBS_tarif.tarif(tar_id, zone, poids, ligne, OnSucceeded);
    }
    et la gestion du retour
    function OnSucceeded(result) {
    var tableau = result.split('|');

    if (surConvertToFloat(tableau[0]) == 0)
    alert('pas de tarif !!!');

    ...
    }

  16. #16
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Ah mince, pas d'ajax avec jQuery lol. Merci quand même pour tous le reste

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

Discussions similaires

  1. Comparaison de méthodes de communications AJAX avec ASP.NET
    Par Louis-Guillaume Morand dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/05/2009, 14h12
  2. communication client serveur avec les sockets
    Par timtima dans le forum Linux
    Réponses: 2
    Dernier message: 07/11/2007, 10h23
  3. Réponses: 5
    Dernier message: 23/06/2007, 10h45

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