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 :

Accéder à un contrôle depuis WebMethod


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut Accéder à un contrôle depuis WebMethod
    Bonjour.

    Voilà, je souhaite accéder à un contrôle de ma page .aspx depuis une WebMethod.
    Comme je ne peux pas accéder directement au contrôle, je dois crééer une instance de ma page pour le récupérer.
    Je l'ai déjà fait auparavant mais je ne parviens pas à retrouver le code.

    J'ai fait cela mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [System.Web.Services.WebMethod]
        public static string Translate(string value)
        {
     
            _Default maPage = System.Web.UI.Page;
     
            maPage.Flash1.MovieURL = "~/test4.swf";
    System.Web.UI.Page est un type et non une instance de ma page.
    Comment dois-je faire ?

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Lu,
    ce code se trouve t'il dans le code-behind de ta page? Si c'est le cas il suffit de faire ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Web.UI.Page page = this.Page;

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Ah oui merci je crois que c'était quelque chose comme ça.
    Oui c'est en code Behind, dans une WebMethod.

    Le problème c'est qu'ici le mot clef "this" n'est pas disponible dans le contexte actuel.

    EDIT :
    La solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     static System.Web.UI.Page myPage;
      ASPNetFlash.Flash f;
     
       protected void Page_Load(object sender, EventArgs e)
        {
            myPage = this.Page;
        }
     
        //dans la méthode statique
       {
            f = (ASPNetFlash.Flash)myPage.Page.FindControl("Flash1");
       }

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Citation Envoyé par Shargat Voir le message
    Ah oui merci je crois que c'était quelque chose comme ça.
    Oui c'est en code Behind, dans une WebMethod.

    Le problème c'est qu'ici le mot clef "this" n'est pas disponible dans le contexte actuel.

    EDIT :
    La solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     static System.Web.UI.Page myPage;
      ASPNetFlash.Flash f;
     
       protected void Page_Load(object sender, EventArgs e)
        {
            myPage = this.Page;
        }
     
        //dans la méthode statique
       {
            f = (ASPNetFlash.Flash)myPage.Page.FindControl("Flash1");
       }
    Declare myPage en static protected

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2008
    Messages : 138
    Par défaut
    Oui en effet, merci.

    La solution fonctionne, cependant, l'exécution est bloquée par autre chose.
    En réalité, je modifie une propriété de mon control Flash depuis une WebMethod (appelée depuis un code Javascript). Dans la WebMethod, le changement de propriété se fait sur un objet de type controle Flash auquel est normalement affecté le contrôle réel.
    Or il semble qu'en dehors de la WebMethod, les changements faits ne sont pas effectifs sur le contrôle réel, c'est à dire que la propriété modifiée revient à sa valeur d'origine.

    Est-ce qu'une WebMethod peut modifier les propriétés de contrôles de la page aspx ?
    En réfléchissant ça paraitrai logique qu'on ne puisse pas puisque les WebMethod peuvent être appelées par n'importe quelle application web ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     //this WebMethod is called from Javascript and 
        //return the french translation of the word in argument
        [System.Web.Services.WebMethod]
        public static string Translate(string value)
        {
             f.MovieURL = "~/sounds/" + soundFile;
          }

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    C'est une bonne question, il faudrait peut etre ouvrir un nouveau sujet

    En réfléchissant ça paraitrai logique qu'on ne puisse pas puisque les WebMethod peuvent être appelées par n'importe quelle application web ...
    Oui, mais en meme temps c'est toi qui crees les web method et qui decides ce qu'elles font.

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

Discussions similaires

  1. Comment accéder aux contrôles depuis du code?
    Par Leelith dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 15/12/2009, 21h02
  2. Accéder à un contrôle depuis un objet métier
    Par Pierre FORAZ dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 16/05/2009, 17h54
  3. Réponses: 5
    Dernier message: 09/03/2007, 10h07
  4. [debutant] [TOMCAT] Accéder à mes pages depuis internet
    Par Amnesiak dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 27/05/2005, 16h08
  5. Réponses: 2
    Dernier message: 10/05/2005, 14h20

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