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 :

PageMethods et ASP.NET


Sujet :

ASP.NET

  1. #1
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut PageMethods et ASP.NET
    Bonjour,

    J'essaie d'appeler un méthode de mon webservice via le JS mais j'ai un problème majeur que je n'arrive pas à résoudre.

    En fait pour appeler mon traitement il faut que j'utilise "PageMethods" comme l'explique ce site : http://www.sebastien-bouez.net/aspne...u-code-client/ hors mon Visual ne me le propose et pour cause si je le met à la main celà ne fonctionne pas, il me dit q'il est indéfini.

    Y a-t-il une truc a rajouter pour qu'il me le trouve ? qu'ai-je manqué ?

    voici un bout de mon code :

    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
    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MP_Princ.master.cs"  Inherits="monappli.MP_Principal" %>
     
    <%@ Register Assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
        Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
     
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
    <%@ Register Assembly="Controls" Namespace="Controls" TagPrefix="CustomControls" %>
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <script type="text/javascript">
     function SayHello() {
        PageMethods.SayHello("Bill", OnWSRequestComplete);
    }
    </script>
    et le code du webservice

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
     
    namespace L_Services
    {
        /// <summary>
        /// Description résumée 
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(false)]
        // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
        [System.Web.Script.Services.ScriptService]
        public class UserActivity : System.Web.Services.WebService
        {
     
            [WebMethod]
            public static string SayHello(string v)
            {
                return "Bonjour " + v;
            }
        }
    }
    NB : J'ai bien un script manager mais apres la déclaration des fonction JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:ScriptManager ID="SM1" runat="server" EnablePartialRendering="true" EnableScriptGlobalization="true" EnablePageMethods="true" EnableScriptLocalization="true"></asp:ScriptManager>

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Bonjour,

    Pourquoi passe tu par du JS?
    Tu pourrais directement appeler tes Webmethod dans ton C# en ajoutant la référence de ton service à ton projet.

    Il suffit pour cela de faire un clic droit sur ton projet, ajouter une référence de service et saisir l'URL du service.

    Il faudra ensuite créer une instance de ton web service grâce à laquelle tu aura accès à tes méthodes.

    A+

  3. #3
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Merci pour ta réponse mais cela ne convient pas car dans mon cas présent il fait que ce soit le client qui l'appel pour mettre a jour la base, en fait l'objectif final est de réaliser un système qui me permette de savoir si l'utilisateur est tjrs la ou s'il a quitté son explorer a la sauvage.

    J'espère que c'est clair

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Jette un coup d'oeil sur cette page.

    Je pense que tu y trouvera ton bonheur.

    A+

  5. #5
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Je te remercie encore une fois mais il doit me manquer une reférence dans mon projet ou un register je n'en sais rien mais il me manque beaucoup de chose notamment sur le dernier exemple que tu ma donné, il ne trouve pas le "service."

    Je n'y connais pas grand chose encore en javascript et je ne sais pas comment faire pour que VS me propose ces éléments manquant (service.useService par exemple).

    J'ai même regarder les sources de l'exemple sur http://www.codeproject.com/KB/XML/ma...eScript01.aspx et même avec ça je ne comprend toujours pas

    Quelqu'un peut-il m'éclairer ?

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu passes à côté de pas mal de choses de là.
    PageMethod est utilisée pour appeler une méthode de la page définie dans le code behind. Toi, tu essayes d'appeler une web method d'un web service. Ca peut pas marcher.
    Ensuite PageMethod ne fonctionne que pour une page web. Ca ne fonctionne pas dans un UserControl par exemple. Donc je pense que ça ne fonctionne pas pour une MasterPage.

    Si tu veux appeler un web service en javascript (côté client donc), t'as 2 solutions faciles à mettre en oeuvre:
    1- tu fais ça avec jQuery
    2- tu fais ça avec ASP.NET AJAX

  7. #7
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    ok j'ai bien compris que je ne peux pas utilise page méthode dans mon cas c'est pour cela que je cherche à utiliser un web service.

    Donc dans mon cas je souhaite utilisé l'ASP.NET Ajax mais je ne sais pas par ou commencer car toute mon appli repose sur de ASP0.NET ajax donc j'utilise les composant ajax tel que les accordions mais pour appeler une webméthode je ne trouve pas de solution.
    Aurais-tu une/des pistes à me conseiller ?

    Sinon je suis tombé sur le net sur cela http://msdn.microsoft.com/en-us/libr...connected.aspx est-ce que ça pourrais résoudre mon problème ? car l'objectif de ça est de suivre si un user est connecter ou non ?

  8. #8
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bon d'après ce que j'ai compris,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.IsClientConnected
    ne résoudrais pas mon problème car celui-ci passe à false si le client change de page.

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est super simple d'appeler un web service avec ASP.NET AJAX
    1- Tu références ton web service dans ton script manager:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
                    <Services>
                        <asp:ServiceReference Path="~/WebServices/WsBlotter.asmx" />
                    </Services>
                </asp:ScriptManager>
    Ensuite, tu appelles ta web method en lui passant les paramètres habituels + 2 call back car tout appel est en asynchrone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function PublishHeartbeat() {
                        BlotterLightCNCE.WsBlotter.PublishHeartbeat($get('login').value, OnCompletePublishHeartbeat, OnErrorPublishHeartbeat);
                    }
     
                    function OnCompletePublishHeartbeat(result) {
                        // tout s'est déroulé correctement
                    }
     
                    function OnErrorPublishHeartbeat(result) {
                        // traitement error
                    }
    BlotterLightCNCE est le namespace où se trouve mon webservice WsBlotter

  10. #10
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Re,

    Je suis désolé de faire le boulet mais je n'y arrive pas

    en fait j'ai bien fait la référence dans mon script manager mais lorsque je créé ma fonction, il ne me propose ni mon espace de nom et donc encore moins ma méthode.

    Que dois-je ajouter pour que je puisse accéder à mon espace de nom depuis le script ?

  11. #11
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    J'ai continué à chercher et je suis tombé sur cela :
    http://dotnet.developpez.com/faq/asp...#fermersession

    Cette solution fonctionne en partie et je ne comprend pas pourquoi, en fait il fonctionne uniquement lorsque je suis sur la master page et dès que je parcours mes UC il ne réagit plus

  12. #12
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    OK bon on laisse tombé la solution http://dotnet.developpez.com/faq/asp...#fermersession il se declenche chaque F5

Discussions similaires

  1. Choisir PHP ou ASP.NET ?
    Par discogarden dans le forum Général Conception Web
    Réponses: 81
    Dernier message: 31/12/2009, 18h11
  2. [CR][ASP.NET] Impression en format "paysage"
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/04/2004, 22h56
  3. [CR][ASP.NET] Problème d'affichage du rapport
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 20/04/2004, 12h39
  4. [CR][ASP.NET] Un champ avec plusieurs polices...
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 08/04/2004, 14h19
  5. Driver postgre pour asp.net
    Par vonbier dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/10/2003, 13h35

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