Meilleur auteur de réponses
Impossible d'appeler une class à portée "public"

Question
-
Bonjour à tous,
J'ai dans mon projet 2 classes avec des portées public. C'est un projet ASP.NET, seule le code behind pose problème.
J'ai crée une classe de connexion nommée ConnectionClass que voici:
et la page nommée Coffee, ayant le code behind que voici:using System; using System.Collections; using System.Configuration;
using System.Data.SqlClient; namespace Coffee.App_Code { public static class ConnectionClass { //static--> avoir la variable partout dans le projet private static SqlConnection conn; private static SqlCommand command; public static ConnectionClass() { string connectionString = ConfigurationManager.ConnectionStrings["CoffeeConnection"].ToString(); conn = new SqlConnection(connectionString); command = new SqlCommand("", conn); } public static ArrayList GetCoffeByType(string coffeeType) { ArrayList List = new ArrayList(); string query = string.Format("SELECT * FROM coffee WHERE type LIKE'{0}'", coffeeType); try { conn.Open(); command.CommandText = query; SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { int id = reader.GetInt32(0); string name = reader.GetString(1); string type = reader.GetString(2); double price = reader.GetDouble(3); string roast = reader.GetString(4); string country = reader.GetString(5); string image = reader.GetString(6); string review = reader.GetString(7); Coffee.App_code.Coffee coffee = new Coffee.App_code.Coffee(id, name, type, price, roast, country, image, review); List.Add(coffee); } } finally { conn.Close(); } return List; } } }
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; using Coffee; namespace Coffee.Pages { public partial class Coffee : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } private void FillPage() { ArrayList coffeeList = new ArrayList(); if (!IsPostBack) { coffeeList = ConnectionClass.GetCoffeeByType("%"); } else { coffeeList = ConnectionClass.GetCoffeeByType(DropDownList1.SelectedValue); } } } }
Comme vous pouvez le voir en image jointe, dans le code-behind de la page, lorsque j'appelle la ConnectionClass, elle est soulignée de rouge. Impossible de l'appeler. Et à mon grand désarroi, je n'arrive pas à déceler d’où provient l'erreur. Merci de m'aider.
- Modifié Alexandre le_Grand mercredi 12 juin 2013 19:27
Réponses
-
Bonjour
Donc essayez de commenter le contenu du FillPage (), faites une compilation, et décommettez le contenu de FillPage.
Bonjour,
Effectivement je publie le projet en localhost au fil de l'avancement. et je ne comprends pas cette partie de votre intervention que je viens de citer.
Par contre, j'ai pu constater, (c'est une remarque que j'ai faite avec Visual Studio 2012) lorsque que je change le nom du dossier avec comme exemple Code au lieu de App_code ou encore App_Code, il n'y a plus de problème. La classe est appelée partout.
La remarque la plus frappante est la suivante qui pourrait être une nouveauté de Visual Studio 2012: Lorsque vous ajoutez dossier dont le noms est compris dans cette suite que voici '{App_code, App_GlobalResources, App_Browsers...theme}, vous avez carrement un choix limité d'éléments ajoutable selon le dossier créer, Et tous ces dossier sont pré-nommés et trouvables de la façon suivante: Faites un clic droit sur le projet, vous avez une option Ajouter ---> "Ajouter le dossier ASP.NET" qui elle même renferme tous les dossiers sus-nommés.
Peut-être que ceci devrait expliquer l’impossibilité d'appeler cette classe de portée public.Merci pour votre aide.
Cordialement.
- Marqué comme réponse Alexandre le_Grand vendredi 21 juin 2013 11:09
-
Bonjour,
J'ai essayé de recréer les repertoire App_code plusieurs fois en changeant la casse, mais rien n'y fit.
J'ai fini par reprendre le projet en prenant soins de faire un nommage intelligent des pages et des classes. j'ai pu avancer.
Merci .
- Marqué comme réponse Aurel Bera vendredi 21 juin 2013 10:35
Toutes les réponses
-
Bonjour
A une première vue, le problème est que vous essayez la compilation du Coffee.Pages avant Coffee.App_Code.
Donc essayez de commenter le contenu du FillPage (), faites une compilation, et décommettez le contenu de FillPage.
Une solution plus élégante c’est d’utiliser un autre projet (lire Namespace), référencer le DLL et l'utiliser.
Cordialement. -
Bonjour
Donc essayez de commenter le contenu du FillPage (), faites une compilation, et décommettez le contenu de FillPage.
Bonjour,
Effectivement je publie le projet en localhost au fil de l'avancement. et je ne comprends pas cette partie de votre intervention que je viens de citer.
Par contre, j'ai pu constater, (c'est une remarque que j'ai faite avec Visual Studio 2012) lorsque que je change le nom du dossier avec comme exemple Code au lieu de App_code ou encore App_Code, il n'y a plus de problème. La classe est appelée partout.
La remarque la plus frappante est la suivante qui pourrait être une nouveauté de Visual Studio 2012: Lorsque vous ajoutez dossier dont le noms est compris dans cette suite que voici '{App_code, App_GlobalResources, App_Browsers...theme}, vous avez carrement un choix limité d'éléments ajoutable selon le dossier créer, Et tous ces dossier sont pré-nommés et trouvables de la façon suivante: Faites un clic droit sur le projet, vous avez une option Ajouter ---> "Ajouter le dossier ASP.NET" qui elle même renferme tous les dossiers sus-nommés.
Peut-être que ceci devrait expliquer l’impossibilité d'appeler cette classe de portée public.Merci pour votre aide.
Cordialement.
- Marqué comme réponse Alexandre le_Grand vendredi 21 juin 2013 11:09
-
Et aussi en avançant, je constate qu'il y a conflit entre les différentes appellation des Entités tels que ConnectionClass et Coffee dans la Coffee.dll. J'ai ce message:Avertissement 1 Le type 'Coffee.MesEntites.ConnectionClass' dans
'c:\Users\~\Documents\Visual Studio 2012\Projects\Coffee\Coffee\MesEntites\ConnectionClass.cs'
est en conflit avec le type importé 'Coffee.MesEntites.ConnectionClass' dans
'c:\Users\~\Documents\Visual Studio 2012\Projects\Coffee\Coffee\bin\Coffee.dll'.
Utilisation du type défini dans
'c:\Users\~\Documents\Visual Studio 2012\Projects\Coffee\Coffee\MesEntites\ConnectionClass.cs'.
C:\Users\~\Documents\Visual Studio 2012\Projects\Coffee\Coffee\MesPages\Page_Coffee.aspx.cs
25 36 Coffee.Là je ne sais plus si je dois reprendre le projet.
-
Vous devez réorganiser le projet.
Essayez de créer le répertoire App_Code comme décrit et déplacer le fichier ConnectionClass.cs dans ce répertoire.
Cordialement.
-
Bonjour
Avez-vous des nouvelles pour nous?
Merci
Cordialement,
-
Bonjour,
J'ai essayé de recréer les repertoire App_code plusieurs fois en changeant la casse, mais rien n'y fit.
J'ai fini par reprendre le projet en prenant soins de faire un nommage intelligent des pages et des classes. j'ai pu avancer.
Merci .
- Marqué comme réponse Aurel Bera vendredi 21 juin 2013 10:35
-
Bonjour,
Merci pour tenir la communauté informée sur la suite de vos démarches.
Cordialement,
-
Personnellement,
Je crois que VS 2012 restreint l'utilisation des dossiers sus-nommés(App_code, App_GlobalResources, App_Browsers...theme}) ce qui explique le choix limité d'éléments ajouttables selon le dossier créer.
Merci à tous pour les coups de mains.