Le type ou le nom d'espace de noms n'existe pas dans l'espace de noms (vous manque une référence d'assembly?)
Je sais que cette question a déjà été posée, mais je ne peux pas trouver tout ce qui peut aider à résoudre mon problème.
Je veux connecter mon aspx
page (Retete.aspx
) à une base de données Microsoft SQL. J'obtiens cette erreur sur Retete.aspx.cs
:
Erreur 1 le type ou Le nom d'espace de noms 'GlobalClass" n'existe pas dans l'espace de noms 'ProiectSera' (vous manque une référence d'assembly?)
L'erreur des points de cette ligne de code:
ProiectSera.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
Où ProiectSera
est le nom du projet, GlobalClass
est le fichier où je fais l'opération sur la db.
Ma à l'aide de relevés sont:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProiectSera;
Le Framework Cible est définie à .net-4.5.
Que dois-je faire pour résoudre cette erreur?
Mise à jour
Mon GlobalClass.cs:
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
using ProiectSera;
using System.Data.Services;
namespace ProiectSera.App_Code
{
public static class GlobalClass
{
static public void Update(string _param1, string _param2)
{//function to update}
}
}
App_Code est un dossier où GlobalClass.cs est. J'ai essayé et
ProiectSera.App_Code.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text); //
mais j'ai eu le même message d'erreur. Et j'ai mis le GlobalClass.cs dans la racine du projet. J'ai également supprimé les .App_Code de namespace ProiectSera.App_Code
UPDATE1
Mon Retete.aspx.cs est
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProiectSera;
using ProiectSera.App_Code;
namespace ProiectSera
{
public partial class Retete : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave_Click(object sender, EventArgs e)
{
string intValRefTempSol;
string intValRefTempAer;
// intValRefTempSol = ValRefTempSol.Text;
// intValRefTempAer = ValRefTempAer.Text;
// ProiectSera.App_Code.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
}
}
}
- Il n'a pas d'importance ce qui est de votre "aide" des états, ce qui importe est ce qui est dans votre Projet de "Références".
- est
GlobalClass
fichier ouclass
? assurez-vous que c'estpublic
- ce que doit contenir "les Références de Projet"? @ tchelidze est un fichier, GlobalClass.cs. Est public.
- est GlobalClass dans le même projet que le Retete.aspx?
- oui, il est dans le même projet.
- Est mise à Jour une méthode statique de GlobalClass? Ou est GlobalClass statique? Aussi, ne pas préfixer avec ProiectSera (ne sais pas si vous voulait vraiment dire ProjectSera ou si c'est un langage chose?) soit. Juste GlobalClass.Mise à jour(etc, etc) c'est bien. Vous allez avoir besoin d'une référence de projet à ProiectSera à partir de votre application web, si c'est un distinct lib trop.
- Êtes-vous censé être de référencement ProiectSera ou ProjectSera?
- il s'agit: static public void Update(string _param1, chaîne _param2) {...}
- ProiectSera est le nom de mon VS projet.
- Bon, eh bien, aussi longtemps que vous avez un projet de référence (si c'est dans un autre projet), et vous avez
using ProiectSera;
(en supposant que ce n'est pas une faute de frappe), alors il suffit d'utiliserGlobalClass.Update(param1, param2, etc)
. - Assurez-vous aussi que le framework cible sur la référencés le projet est compatible.
- Donc. Mon Retete.aspx.cs fichier et GlobalClass.cs fichier sont dans le même VS projet. C'est la première fois quand je fais cela, c'est pour ça que les choses peuvent être confuse pour moi.
- pouvez-vous joindre à l'espace de noms à partir de votre GlobalClass.
- que voulez-vous dire?
- dans le haut de votre GlobalClass.cs vous devez déclarer l'espace de noms: quelque chose comme espace de noms MyProject.SomeSpecificNameSpace{ public class GlobalClass { } }
- Vous n'avez pas besoin
using ProiectSera;
à l'intérieur d'une classe qui est déjà défini dans l'espace de nom (en Retete.aspx.cs). Pas votre problème ici, mais il vaut la peine de se débarrasser de ce pour éviter la confusion. Personnellement, j'aimerais commencer à partir de zéro et de se débarrasser de GlobalClass. Recréer, par l'ajout d'une classe dans le répertoire App_Code et de voir quels noms il vous donne. Puis collez votre code à partir de l'original GlobalClass dans votre nouveau. Ensuite, l'utilisation de l'espace de nom donné à consulter à partir de votre autre classe. - Je vais essayer demain car il est tard où je suis. Si je vais avoir des questions je vous dérange? Merci beaucoup pour votre temps!
- Si vous supprimez le
using ProiectSera.App_Code;
ligne à partir de votre code et il suffit de taper GlobalClass quelque part dans votre code. Cliquez ensuite sur le peu de texte et appuyez sur Ctrl-Alt-F10. Il devrait apporter des options pour vous aider à lier. Si elle vient avec quelque chose comme de Générer classe et pas d'options concernant l'utilisation de déclarations, votre projet n'a pas de notion de GlobalClass qui y sont définis.
Vous devez vous connecter pour publier un commentaire.
Votre
GlobalClass
est dans l'espace de nomsProiectSera.App_Code
.De sorte que le nom de la classe est
ProiectSera.App_Code.GlobalClass
Assurez-vous que vous n'avez pas de
ProiectSera
classe dans leProiectSera
espace de noms aussi, sinon, si le déclarantusing ProiectSera
sur le dessus, il va essayer de l'utiliser (en règle générale, ne pas le nom de toute la classe le même que celui de votre espace de noms).Si cela ne fonctionne toujours pas, vous pouvez essayer d'utiliser le
global
espace de noms:et voir si cela fonctionne: si ça ne marche pas, et
GlobalClass
est dans le même projet, alors il y a quelque chose d'autre que vous n'avez pas montréMise à jour
La seule autre chose qui vient à l'esprit, si vous êtes positif que les deux fichiers sont sur le même projet/de l'assemblée, c'est que
GlobalClass.cs
n'est pas être compilé. Assurez-vous que leBuild Action
est fixé àCompile
(vous pouvez voir de l'action de construire un clic droit sur leGlobalClass.cs
dans l'explorateur de solutions et sélectionnezProperties
).GlobalClass.cs
etRetete.cs
sont dans le même projet (même sur des dossiers différents, siglobal::ProiectSera.App_Code.GlobalClass.Update(...)
ne fonctionne pas, la seule chose qui vient à l'esprit est que votreGlobalClass.cs
n'est pas compilé. Assurez-vous que leBuild Action
surGlobalClass.cs
est fixé àCompile
(clic droit sur le fle dans l'explorateur de solutions et sélectionnezProperties
pour voir la fenêtre de propriété)Si vous utilisez VS.NET:
En raison de la façon dont vous appeler, vérifier que dans GlobalClass.cs choses sont déclarées comme suit:
La
GlobalClass
lui-même ne peut pas être statique, mais la méthode ne, au moins si vous voulez l'utiliser de la manière que vous faites.(J'ai envisagé de mettre ceci comme commentaire, mais de formatage de code m'a conduit à faire une réponse)
Mise à jour après la question a été rendue plus complète:
Vous devez utiliser
ProiectSera.App_Code.GlobalClass.Update(...)
à appeler la méthode.ProiectSera.App_Code.GlobalClass.Update(...)
(et non, la classe n'était pas exactement comme je l'ai montré...)S'assurer de ce qui suit...
using ProiectSera;
). En supposant que c'est le bon espace de noms. Vérifier l'espace de noms de votre GlobalClass de la classe et de l'utilisation que l'utilisation de conséquence dans la classe qui souhaite utiliser sa fonctionnalité.Ensuite, il suffit d'appeler dans votre code, en supposant que la mise à Jour est une méthode statique de GlobalClass.
GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);
EDIT: étant donné que vous avez posté votre GlobalClass code, vous pouvez voir que l'espace de noms pour cette classe est
ProiectSera.App_Code
;. Si vous avez besoin d'avoir ce que l'aide de votre déclaration dans l'autre classeusing ProiectSera.App_Code;
. Et puis appeler par l'intermédiaire de simplement GlobalClass.Mise à jour, comme mentionné ci-dessus.Si vous ne comprenez pas comment namespacing travaille en C#, alors je vous recommande de vérifier cela (https://msdn.microsoft.com/en-us/library/dfb3cx8s.aspx).
ProiectSera.App_Code.GlobalClass.Update(param1, param2);
OU vous y compris l'instruction à l'aide de l'espace de nomsusing ProiectSera.App_Code;
et vous pouvez simplement utiliserGlobalClass.Update(param1, param2);
Si vous tapez juste GlobalClass sans l'aide de, puis cliquez-droit sur GlobalClass, il devrait venir avec l'option de comment l'insérer, avec ou sans aide. Si elle ne vient pas avec des suggestions via intellisense, puis GlobalClass est pas dans ce projet et vous n'avez pas de référence pour elle.GlobalClass.Update(param1, param2);
L'erreur que je reçois aujourd'hui est:The type or namespace name 'App_Code' does not exist in the namespace 'ProiectSera' (are you missing an assembly reference?)
. C'est comme Le dossier App_code n'est pas dans mon projet? Mais il est certainement. Ce que je pourrais faire d'autre?using Pro
, a-t-il avec ProiectSera comme une option dans Intellisense? Si oui, alors vérifiez que App_Code vient après vous tapezusing ProiectSera.
. Si elle ne le fait pas, alors vous avez fait quelque chose de mal dans votre code. Vous devriez avoir un dossier App_Code là. Vérifier l'espace de noms par défaut de votre projet web également, dans les paramètres du projet.System.Configuration
est ajouté.