2016-04-01 21 views
1

Bu sorunun zaten sorulmuş olduğunu biliyorum, ancak sorunumu çözmeye yardımcı olabilecek hiçbir şey bulamıyorum.Ad alanında ad veya ad alanı adı mevcut değil (bir montaj başvurusu eksik misiniz?)

aspx sayfamı (Retete.aspx) bir Microsoft SQL veritabanına bağlamak istiyorum. Ben Retete.aspx.cs bu hatayı alıyorum: türü veya ad alanı adı 'GlobalClass' ad 'ProiectSera' içinde yok

Hata 1 (bir derleme başvurusu eksik?) hata noktalarını bu çizgiye kod:

ProiectSera proje adıdır
ProiectSera.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text); 

, GlobalClass ben db üzerinde operasyon yapmak dosyasıdır.

My kullanarak ifadeler şunlardır:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using ProiectSera; 

Hedef Çerçeve ayarlanır.

Bu hatayı çözmek için ne yapmalıyım?

Güncelleme Benim GlobalClass.cs geçerli:

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 GlobalClass.cs bir klasördür. Denedim ve aynı hatayı aldım ve

. Ve GlobalClass.cs'i projenin köküne koydum. Ben de

UPDATE1 Benim Retete.aspx.cs Çünkü

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); 
} 
} 
} 
+2

"Kullanım" ifadelerinizde ne olduğu önemli değil, önemli olan "Proje Referansları" nızdadır. –

+0

, "GlobalClass" dosyası mı yoksa "sınıf" mı? "Proje Referansları" nı içermesi gerektiğinden emin olun 'public' – tchelidze

+0

@BryceWagner? @ tchelidze bir dosyadır, GlobalClass.cs. Halka açık. –

cevap

1

Sizin GlobalClass adınız ProiectSera.App_Code ad alanında.

Yani sınıf adı, üstte using ProiectSera ilan, bu genel bir kural olarak (kullanmak çalışacağım aksi takdirde ProiectSera.App_Code.GlobalClass

, ayrıca ProiectSera ad alanında bir ProiectSera sınıf olmadığından emin olun olduğunu herhangi bir sınıfı ad alanınızla aynı şekilde adlandırmayın).

hala çalışmıyorsa, sen global ad kullanarak deneyebilirsiniz: eğer inşaat

global::ProiectSera.GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text); 

ve bakın: öyle değil ve GlobalClass sonra, aynı projede ise bize

Güncelleme olmadığını göstermiştir başka bir şey var

akla gelen tek şey, her iki dosyalar aynı proje/montaj olduğunuzu pozitif ise, GlobalClass.cs aslında derlenmiyor. Build Action'un Compile olarak ayarlandığından emin olun (yapılandırma eyleminde GlobalClass.cs'u tıklatıp Properties'u seçerek yapı eylemini görebilirsiniz).

+0

Hayır. Çalışmadı. Başka ne gösterebilirim? –

+0

Sorumu güncelledim. –

+1

@magn'inizden sonra, globalClass.cs ve Retete.cs'lerin aynı projede (farklı klasörlerde bile)% 100 olumlu ise, global: ProiectSera.App_Code.GlobalClass.Update (...) 'işe yaramadı, akla gelen tek şey' GlobalClass.cs'nizin derlenmemesidir. "GlobalClass.cs" üzerinde "Oluşturma Eylemi" nin "Compile" olarak ayarlandığından emin olun (çözüm gezgininde fileye sağ tıklayın ve özellik penceresini görmek için 'Özellikler'i seçin) – Jcl

0

olduğunu namespace ProiectSera.App_Code den .App_Code kaldırıldı bunu aradığınız ne, GlobalClass.cs içinde kontrol şeylerdir ilan şöyle:

namespace ProiectSera 
{ 
    public static class GlobalClass 
    { 
     public static void Update(...) 
     { 
      // ... 
     } 
    } 
} 

GlobalClass kendisi olmayabilir Statik olmak için, ancak yöntem, en azından bunu kullanmak istediğinizde yapıyorlar.

(ben bir yorum olarak bu koyarak kabul ama kod biçimlendirme bir cevap yapmak götürdü)

soru daha tam yapıldıktan sonra Güncelleştirme:
Sen yöntemi çağırmak için ProiectSera.App_Code.GlobalClass.Update(...) kullanmalıdır.

+0

Gösterdiğin gibi. –

+0

Sadece emin olmak için lütfen soru metnine GlobalClass.cs içeriğini ekleyin (belki de uzun bir sınıfsa bazı ayrıntılar kaldırılmışsa). –

+0

Güncellenen soruya bakın. –

0

aşağıdakileri sağlayın ... ayrı bir kütüphanede eğer siz, web uygulamasından ProiectSera bir proje başvurusu var

  • .GlobalClass web uygulama projesinin kendisinde ise, buna ihtiyacınız olmaz, ancak GlobalClass aynı çözümdeki veya başka bir yerdeki ayrı bir kütüphanede tanımlanmışsa, web uygulamanızdaki harici kütüphaneye add a reference'a ihtiyacınız olacak demektir. .
  • ProiectSera'nın ProjectSera olmamasına dikkat edin (eğer yazım hatası varsa).
  • ProiectSera'nızı kullanarak en üstte (using ProiectSera;) yerinde bulunduğunuzdan emin olun. Bunun doğru ad alanı olduğunu varsayarsak. GlobalClass sınıfınızın ad alanını kontrol edin ve işlevselliğini kullanmak isteyen sınıfta uygun şekilde kullanın.
  • Ardından, Güncelleştirme'nin bir GlobalClass statik yöntemi olduğunu varsayarak kodunuzda bunu basitçe arayın.

    GlobalClass.Update(ValRefTempSol.Text, ValRefTempAer.Text);

DÜZENLEME: artık GlobalClass kodunu gönderdiniz göz önüne alındığında, bu sınıf için ad ProiectSera.App_Code olduğunu görebilirsiniz;. Bu nedenle, using ProiectSera.App_Code; numaralı sınıftaki kullanım ifadeniz olarak buna sahip olmanız gerekir. Ve daha sonra, yukarıda belirtildiği gibi, sadece GlobalClass.Update ile arayın.

Ad yapıştırma işleminin C# ile nasıl çalıştığını anlamıyorsanız, bunu kontrol etmenizi öneririz (https://msdn.microsoft.com/en-us/library/dfb3cx8s.aspx).

+0

İyi anlaşılmış olup olmadığımı göreyim. Bu hata, bu 2 dosya ayrı projelerde olduğunda görünür? –

+0

Yapabilir, ancak aynı projede GlobalClass'a doğru bir şekilde atıfta bulunmuyorsanız da oluşabilir. Ve bu, GlobalClass ad alanına dayalı doğru kullanım ifadesine sahip olmanızı gerektirir. Ve sonra bu sınıfa ve yönteme doğru bir şekilde atıfta bulunarak (yukarıda yazdığım gibi). – ManoDestra

+0

Denedim ve nasıl sınadığınızı, proje adını kaldırmayı ve yalnızca sahip olmayı denedim: GlobalClass.Update (ValRefTempSol.Text, ValRefTempAer.Text); Ama sorun aynı. Sorumu bilgilerle güncelliyorum. –

0

sen VS.NET kullanıyorsanız: Referanslar üzerine

  1. sağ tıklayın projenizde klasörü.
  2. Referans ekle'yi seçin.
  3. .NET sekmesini seçin (veya bir .NET Framework aksamı değilse Gözat düğmesini seçin).
  4. Hata mesajında ​​ad alanını içeren derlemeyi çift tıklatın.
  5. Tamam düğmesine basın.