2011-02-15 16 views
5

VS2008 web uygulama projemde App_Code klasörüm içinde bulunan çok basit bir sınıf var. Bu sınıfın bir örneğini kod arkasındaki dosyadan başlatmaya çalışıyorum. Intellisense sınıfımı görüyor görünmüyor ve neden emin değilim. C# ile karşılaştırıldığında bu aşina değilim ki kabul ediyorum VB.NET kullanıyorum. Belki bir şey özlüyorum. Bahse girerim VB.NET'te eksik olduğum bir şeyle ilgili bir şey vardır. Ben codebehind bir örneğini denemek nasılSınıfıma kod arkasından erişemiyorum. Sınıf, App_Code klasörüdür

İşte
Public Class mySimpleClass 

    'Private member variables whose data is obtained from user input 
    Private mUserID as String 

    'Class Properties 
    Public Property UserID() as Integer 
     Get 
      Return mUserID 
     End Get 

     Set(ByVal Value as Integer) 
      mUserID = Value 
     End Set 
    End Property 

    'Class Methods 
    Public Function DisplayUserID() as String 
     Return this.UserID 
    End Function 

End Class 

olduğunu ...

Partial Public Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim obj As New mySimpleClass() 
    End Sub 

End Class 
+0

Çözümü oluşturun ve tekrar deneyebilirsiniz. – Anuraj

+0

@Anuraj - Bunu denedim ve şans yok. Hala sınıfım tanınmıyor diyor. Herhangi bir sınıfın mevcut olacağını App_Code klasörüne yerleştirerek düşündüm. App_Code klasörünü el ile oluşturmanız gerekiyordu. Önemi var? – webworm

cevap

11

Ne yaptım sona erdi benim App_Code klasörünü silme ve yeni bir "AppCode" klasörü oluşturma oldu. Ayrıca sınıf dosyası için özellikleri seçtim ve Build Action özelliğini "Compile" olarak ayarladım. Bunu bir kez yaptım ve projemi yeniden derledim sınıfım ortaya çıktı.

+3

Teşekkürler! Bir klasörü silmem gerekmiyordu, sadece .vb sınıf dosyalarını Buld Action 'Compile' olarak ayarladım. App_Code'dayken VS'nin bunu 'İçerik' olarak ayarlamasının sebebi nedir bilmiyorum ... –

+0

Bunu daha önce hiç görmedim, özellikle bir C# dev olarak, ama bir şirkette buna rastladım. . VB kullanıyorlar ... bu cevap benim sorunumu çözdü ... bir nedenle tüm yeni sınıflar inşa eylemi için "derleme" yerine "içerik" olarak ayarlandı. – tjans

+0

Sadece Project> New Item> Module ile projeye eklenen bir modülde uzatma yöntemleri oluşturmaya çalışırken birkaç saat çalıştım. Açık ad alanı, açık 'Public' denedim, ama hiçbir şey işe yaramadı. Normalde C# 'de çalışıyorum ama biraz da VB deneyimim var, bu yüzden bu işe yaramadığı için tamamen flabberglendim. Sorunun cevabı gösterdiği gibi çıktı: modül dosyası (kod dosyası) Build Action = Content ile VS tarafından eklenmiştir. O NE LAN?! –

1
  1. Eğer Return this.UserIDReturn Me.UserID olarak değişmelidir: Burada

    (test için) benim basit sınıftır (VB.Net ;-))
  2. çözümü yeniden oluşturun ve çalışıp çalışmadığını kontrol edin

Genel olarak app_code klasörüne ve Web Sitelerine aşina değilim, her zaman WebUygulamalarını kullanıyorum. Ben de convert it to a WebApplication öneririm, burada daha fazla bilgi neden: ASP.NET Web Site or ASP.NET Web Application?

+0

"Bu" ile "me" arasındaki düzeltme için teşekkürler. :) – webworm

1

Aslında, projenize ad alanı eklerseniz, bunun da işe yarayacağını düşünüyorum. Bu soruna her zaman C# asp.net'de de sahip olduğumu hatırlıyorum.

0

Gustyn (tür) ile anlaşılabilir. Bir "ad alanı kullanarak;"

Dave

0

"App_Code" klasöründe "kamu" sınıf (lar) tutan her bir dosya gitmek ve hile yapacak derleme için Content Eylem'i kurmak ardındaki web formu koduna hattı. Web Uygulama tipi projeler için çalışır. Bir modül (VB) veya ad alanı veya statik (C#) kullanıp kullanmamanız gerektiğiyle ilgili tüm şeyler, sınıf dosyalarınızı (hangi klasörde bulunurlarsa bulunsunlarsa olsunlar) derlenene kadar yardımcı olmaz.

İlgili konular