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 :

Comment utiliser une même fonction dans plusieurs fichiers aspx ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut Comment utiliser une même fonction dans plusieurs fichiers aspx ?
    Bonjour,
    j'utilise la même fonction c# dans plusieurs fichiers aspx.

    Y a-t-il un moyen de ne pas répéter le code de cette fonction dans tous les fichiers aspx ?

    En naviguant sur le site et en lsiant différents sujets j'ai pensé à faire un fichier .cs dans lequel je place le code de cette fonction dans une classe incluse dans un NameSpace et faire référence à ce NameSpace dans chaque fichier aspx, mais ça ne fonctionne pas.


    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
    using System;
     
    namespace FonctionsUtiles
    {
        public class ClassFonctionsutiles
        {
            public static void Main()
            { }
     
     
            void Apostrophes(SqlConnection MyConnection)
            {
                // option pour gérer les apostrophes dans les vlauers de champs sql
                SqlCommand myOptionB = new SqlCommand("SET QUOTED_IDENTIFIER OFF", MyConnection);
                SqlDataReader myDataOptionB = myOptionB.ExecuteReader();
                myDataOptionB.Close();
            }
        }
    }
    Le fichier cs est sauvé dans le même répertoire que les ficheirs aspx.

    Et dans le fichier aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ import Namespace="FonctionsUtiles" %>
    J'obtiens à la compilation que le nom FonctionsUtiles n'existe pas dans le contexte actuel.

    J'ai aussi essayé de mettre le code de la fonction dasn le fichier global.asax.

    Ca me donne le même message d'erreur.

    Sinon j'essaie de générer un projet bibliothèques de classes à partir du fichier cs mais du coup mes objets qui provenaient du NameSpace System.Data ne sont plus reconnus. Bref, le serpent qui se mord la queue ...

    Si quelqu'un a une idée ....


    je crois que je vais rester sur mes copiers-collers de fonctions dans chaque fichier aspx. C'est beaucoup plus compliqué que jadis en c ou c++ ou d'un simple #include on pouvait inclure du code automatiquement ....

    Bon là j'ai une fonction à modifier, je vais devoir la modifier dans 15 fichiers aspx ....
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    En .net 2.0 tu as un un répertoire App_code
    qui te permet de partager des classes donc des fonctions

    Il suffit ensuite de rajouter cette classe dans tes fichiers aspx ....
    ----------------------------------
    La façon la plus efficace de combattre un système qui ne nous convient plus
    n'est pas de lutter contre lui mais de s'en désintéresser et de ne plus l'alimenter...

    ----------------------------------

  3. #3
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Merci lenoil.

    Donc je crée un répertoire App_code à la racine de mon répertoire web et je mets dedans mon fichier .cs ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  4. #4
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Dans Visual Studio 2005, tu fais un clique droit sur le nom de ton projet dans l'"Explorateur de solutions", et là tu as "Ajouter le dossier ASP.Net", comme ça tu es sûr qu'il te le créera juste comme il faut. Et effectivement tu mets dedans ton fichier .cs (n'oublie pas d'appeller l'espace de nom si nécessaire).

  5. #5
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    J'ai bien ajouté le dossier avec VS2005.
    J'ai mis dedans le fichier cs.

    Le nom des fonctions définies dans le fichier cs n'est pas reconnu dans le fichier aspx.

    Si j'ajoute <%@ Import Namespace="FonctionsUtiles" %> en en-tête du fichier aspx la compil du fichier aspx me dit que le Namespace n'est pas trouvé. Ce NameSpace est bien défini dans le fichier cs.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  6. #6
    Membre confirmé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Points : 598
    Points
    598
    Par défaut
    Il faut plutôt que tu ajoutes :
    ...en tête de ton fichier aspx.cs principal.

    Ou alors tu appelles directement la fonction en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FonctionsUtiles.Apostrophes();

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 469
    Points : 167
    Points
    167
    Par défaut
    c'est ce que je voulais dire mais strat a été plus rapide que moi
    ----------------------------------
    La façon la plus efficace de combattre un système qui ne nous convient plus
    n'est pas de lutter contre lui mais de s'en désintéresser et de ne plus l'alimenter...

    ----------------------------------

  8. #8
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    Le première solution produit la même erreur.

    La seconde me ferait remplacer tous mes appels dans tous mes fichiers aspx (car j'ai d'autres fonctions à partager entre ems fichiers aspx) ...
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    vire le namespace et dans App_Code recrée plustot un nouvel item, class.cs
    Cela va te créer un code correctement et donc tu pourras faire appel aux méthode sans devoir ajouter un quelconque using.

    Fix

  10. #10
    Membre éclairé Avatar de Filippo
    Homme Profil pro
    Statisticien
    Inscrit en
    Mai 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Mai 2004
    Messages : 864
    Points : 881
    Points
    881
    Par défaut
    quand je génère le cs avec ajouter dans l'explorateru de solutions vs2005 me génère ce 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
    using System;
     
    /// <summary>
    /// Summary description for Class1
    /// </summary>
    public class Class1
    {
    	public Class1()
    	{
    		//
    		// TODO: Add constructor logic here
    		//
    	}
    }
    J'ajoute la définition de mes fonctions à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //
    		// TODO: Add constructor logic here
    		//
    j'obtiens le même message de nom qui n'existe pas dans la portée actuelle.

    J'encapsule Class1 dans un namespace toto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace toto
    {
     
        public class Class1
        { ....
    J'ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ import Namespace="toto" %>
    à mon aspx et là :

    Message d'erreur du compilateur: CS0246: Le type ou le nom d'espace de noms 'toto' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Points : 633
    Points
    633
    Par défaut
    non tu dois créer une méthode (tout ce qu'il y a de plus banal en faite)

    Donc en dehors du message : TODO: Add constructor logic here

    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
     
     
    public class Class1
    {
    	public Class1()
    	{
    		//
    		// TODO: Add constructor logic here
    		//
    	}
                 public void NewMethod(.......)
                 {
                         DoSomething();
                 }
    }
    met en static ou laisse comme ca,
    ce que tu dois faire maintenant dans tes pages aspx est (si non static):

    créer un objet Class1 c = new Class1
    c.NewMethod();

    et voilà

    Fix

Discussions similaires

  1. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  2. [Débutant] Comment faire appel à une même fonction dans plusieurs page web ?
    Par Mikounours dans le forum ASP.NET
    Réponses: 6
    Dernier message: 05/03/2013, 15h52
  3. Réponses: 8
    Dernier message: 02/11/2010, 16h24
  4. Réponses: 4
    Dernier message: 11/09/2008, 08h24
  5. Réponses: 3
    Dernier message: 30/05/2008, 09h03

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