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 :

ASP.net / c# acces a une variable dans une classe


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut ASP.net / c# acces a une variable dans une classe
    Bonjour,

    J ai cree une page ASP : J essaie de faire marcher un exe via une ligne de command qui me retourne normalement un string que je veux afficher dans la dite page asp, cependant je sais pas trop comment faire

    j ai cree pour cela une classe dans .cs, avec son main.J ai mis ma variable string results en global, avez vous un moyen d y acceder par hasard via ma page asp ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    Pour executer une commande je pense qu'il faut regarder du coté de System.Diagnostics.Process, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.Diagnostics.Process proc = new  System.Diagnostics.Process();
    proc.StartInfo.FileName="c:\\mofichier.bat";
    proc.Start();

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    je te remercie de ta reponse,

    en fait, j ai cree une classe qui me permette de creer un processus, ouvrir par exemple wordpad.exe avec un argument dans le serveur, donc cette partie marche normalement.

    Ce que je veux essayer de faire maintenant:

    - j ai ecrit un petit exe qui marche sous console qui me renvoit un string en reponse et se termine.

    et la, je voudrais en fait recuperer ce string, et le renvoyer sur un label.
    j ai redirige les IO, mais pas moyen de la recuperer et l utiliser dans ma page ASP.

    je sais pas comment y acceder, car le scope du string est juste dans la classe, je dois appeler le main qui est un Void, donc qui renvoit rien

    que me proposez vous svp ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Pourquoi ne pas en faire une dll au lieu d'un executable?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    donc je sais pas trop, mais je suis sur un projet, et c est pour l automatisation d un processus qui est d habitude fait manuellement : donc moi, je n ai acces qu a l exe, et c est pour ca que je teste ca sur l exe.

    Le vrai programme qui sera utilise a besoin de 3 arguments, et me renvoit un string que je voudrais recuperer et afficher a l ecran :


    pour le moment, j ai pu acceder a la variable en question, mais elle est toujours vide disons que visual studio 2005 ne me donne aucune erreur d ou mon optimisme !

    voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void ouvrir_IE(object sender, EventArgs e)
            {
                MyProcessSample.MyProcess Lila = new MyProcessSample.MyProcess();
                MyProcessSample.MyProcess.Main();          
                Label1.Text = Lila.results;
            }
    mais je suppose que en fait, c est logique que j accede a un truc vide, mais comment lancer le Main sous Lila ? pour que je puisse vraiment traiter le probleme ?

    pour contourner ce probleme, j ai en fait dans mon code fait une condition sur results : if Results vide : Results = WRONG !

    mais rien ne s affiche :s

    aussi, dois je traiter les infos en "Page_Load" par hasard ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Points : 1 111
    Points
    1 111
    Par défaut
    peut etre que je me trompe mais je ne pense pas qu'on puisse récupérer le "résultat" de ton exe aussi simplement, a mon avis le plus simple serait de rediriger la sortie de ton exe vers un fichier texte puis de traiter ce fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.Diagnostics.Process proc = new  System.Diagnostics.Process();
    proc.StartInfo.FileName="c:\\mofichier.bat > c:\\monfichiertexte.txt";
    proc.Start();
    EDIT : ou alors d'aller écrire une ligne en base de donnée si tu utilise une base de donnée.

  7. #7
    Membre actif Avatar de AJemni
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2008
    Messages : 242
    Points : 290
    Points
    290
    Par défaut
    Salut,
    il est tout à fait possible de récupérer le OutPut de ton exe, c'est comme Flamby38 a dit avec la redirection mais on modifiant un peut le code, un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.Diagnostics.Process proc = new  System.Diagnostics.Process();
    proc.StartInfo.FileName="c:\\mofichier.exe";
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.UseShellExecute = false;
    proc.Start();
    Label1.Text = proc.StandardOutput.ReadToEnd();
    A+

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    bonjour, je vous remercie de votre aide,

    j ai pu resoudre le probleme en utilisant WebMatrix ! avec les indications que vous m avez donne : je n ai utilise qu une seule page pour tout mon code.

    Sur Visual studio, en voulant utiliser, la page asp et la asp.cs : les variables n arrivent pas a reconnaitre les variables des autres pages

    en creant par example une classe avec un main dans mon .cs, par example :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    namespace monspace
    {
          class maclasse
          {
                 public string resultats;
                 void fonction1(){}
                 void fonction1(){}
                 void fonction1(){}
                 void main(){}
          }
    }

    Dans mon asp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void fonction(object sender, EventArgs e)
            {
                Monspace.maclasse Lila = new Monspace.maclasse();
                Monspace.maclasse.Main(); // ca passe
     
                Lila.Main(); // ca passe pas :s
     
                Label1.Text = Lila.results; // ca passe :/
            }
    et j ai cette erreur :

    Default.aspx(22,13): error CS0176: Static member 'MyProcessSample.MyProcess.Main()' cannot be accessed with an instance reference; qualify it with a type name instead
    Merci de vos reponses!

  9. #9
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    C'est normal cette erreur, et le message est clair, tu ne peux pas utiliser une instance de ta classe pour appeller la méthode statique Main, mais tu dois utiliser Classe.Main() à la place de InstanceDeLaClasse.Main().

    En espérant t'avoir aidé.

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    C'est normal cette erreur, et le message est clair, tu ne peux pas utiliser une instance de ta classe pour appeller la méthode statique Main, mais tu dois utiliser Classe.Main() à la place de InstanceDeLaClasse.Main().
    Je te remercie de ta reponse, donc je ne peux utiliser que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Monspace.maclasse.Main();
    mais dans ce cas, comment acceder a ma variable Resultats ?

  11. #11
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Heu...

    J'avais juste lu ton dernier message, je n'avais pas vu la définition de ta classe. Il n'y a pas de référence au mot clé Static. Le code que tu as fourni est bien celui que tu utilises ???

    Car avec ceci :

    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
    namespace monspace
    {
        public class maclasse
        {
            private string _resultats;
     
            public string Resultats
            {
                get { return _resultats; }
                set { _resultats = value; }
            }
     
            public void fonction1() { }
            public void fonction1() { }
            public void fonction1() { }
            public void main() { }
        }
    }
    On obtient ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monspace.maclasse Lila = new monspace.maclasse();
    monspace.maclasse.main(); // CA COMPILE PAS
     
    Lila.main(); // ca passe 
    string s = Lila.Resultats; // ca passe

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    Je te remercie, totalement raison, j avais fait une erreur dans mon code precedent, je m en excuse !

    Alors maintenant : tout passe comme je le veux ou presque, je peux maintenant acceder a ma variable au moins, la je dois verifier mon code pour executer l exe merci ^^

    vient la question bizarre/debutante : pour rendre mon code robuste, que me conseillez vous ?

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  3. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  4. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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