Udostępnij za pośrednictwem


Korzystanie z platformy .NET w języku Visual C# do pracy z plikami klas za kodem w aplikacji ASP.NET

W tym artykule opisano sposób tworzenia stron .aspx korzystających z plików klas za kodem w aplikacjach microsoft ASP.NET. Przykłady kodu w tym artykule obejmują wymagania dotyczące plików klas w tle kodu, które są wstępnie skompilowane i pliki klas za kodem skompilowane na żądanie.

Oryginalna wersja produktu: ASP.NET
Oryginalny numer KB: 308143

Wymagania

Na poniższej liście przedstawiono zalecany sprzęt, oprogramowanie i wymaganą infrastrukturę sieci:

  • Windows
  • .NET Framework
  • Internet Information Services (IIS)

Tworzenie aplikacji internetowej ASP.NET przy użyciu programu Visual C# .NET

W tej sekcji pokazano, jak utworzyć nową aplikację internetową ASP.NET o nazwie CodeBehindSamples.

  1. Uruchom program Visual Studio .NET.
  2. W menu Plik wskaż polecenie Nowy, a następnie kliknij Projekt.
  3. W obszarze Typ projektu kliknij pozycję Projekty Visual C#. W obszarze Szablony kliknij pozycję ASP.NET aplikacja internetowa.
  4. W polu Nazwa wpisz CodeBehindSamples. W polu Lokalizacja wpisz serverName. Jeśli używasz serwera lokalnego, pozostaw wartość Lokalizacja jako http://localhost.

Używanie plików klas za kodem

Jeśli używasz plików klasy za pomocą kodu ze stronami .aspx, możesz oddzielić kod prezentacji od podstawowej logiki aplikacji (lub kodu za pomocą kodu). Plik klasy za kodem jest kompilowany, aby można go było utworzyć i użyć jako obiektu. Umożliwia to dostęp do jego właściwości, metod i procedur obsługi zdarzeń. Aby to zadziałało, strona .aspx musi określać dziedziczenie z klasy bazowej za kodem. W tym celu należy użyć atrybutu Inherits @ Page dyrektywy . Strona .aspx dziedziczy z klasy za kodem, a klasa za kodem dziedziczy z Page klasy .

Domyślnie, jeśli używasz programu Visual Studio .NET, Codebehind atrybut jest dodawany do @ Page dyrektywy. Program .NET Framework nie używa tego atrybutu. Zamiast tego program Visual Studio .NET używa tego atrybutu do obsługi odwołania do skojarzonego pliku kodu dla strony .aspx.

Aby zademonstrować, jak program Visual Studio .NET używa atrybutu Codebehind Codebehind , usuń atrybut . Nie możesz już kliknąć prawym przyciskiem myszy strony .aspx, a następnie kliknąć polecenie Wyświetl kod. To zachowanie występuje, ponieważ program Visual Studio .NET nie zawiera już odwołania do pliku klasy, który może być używany dla strony. Pamiętaj, że nie jest tak, jak program .NET Framework używa plików klas za kodem, ale jak program Visual Studio .NET zarządza tymi plikami projektu.

Używanie atrybutu Dziedziczy ze wstępnie skompilowaną klasą

Jeśli wstępnie skompilujesz klasy kodu w zestawie, możesz użyć atrybutu Inherits , aby określić klasę, z której mają być dziedziczone. W tym scenariuszu nie trzeba uwzględniać rzeczywistego pliku klasy za kodem podczas wdrażania aplikacji. Zamiast tego należy wdrożyć zestaw i stronę .aspx. Zestaw należy umieścić w Bin folderze aplikacji podczas wdrażania aplikacji.

W tej sekcji pokazano, jak utworzyć nowy formularz sieci Web, który używa wstępnie skompilowanego podejścia i dziedziczy z klasy za kodem.

  1. Aby dodać nowy formularz sieci Web o nazwie InheritSample.aspx do projektu programu Visual Studio .NET, wykonaj następujące kroki:

    1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu, kliknij polecenie Dodaj, a następnie kliknij polecenie Dodaj formularz internetowy.
    2. W polu Nazwa wpisz InheritSample.aspx, a następnie kliknij przycisk Otwórz.
  2. Przejdź do widoku Projektu, a następnie dodaj kontrolkę Etykieta formularza sieci Web do strony .aspx.

  3. Kliknij prawym przyciskiem myszy stronę .aspx, a następnie kliknij polecenie Wyświetl kod. Plik związany z kodem zostanie otwarty w edytorze.

  4. W pliku za pomocą kodu dodaj następujący kod do programu obsługi zdarzeń Page_Load :

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Precompiled): Page_Load fired!";
    }
    

    Uwaga 16.

    Ten kod pokazuje tylko, że klasa za kodem jest zaangażowana w przykład w czasie wykonywania w kolejnych krokach.

  5. Przejdź z pliku klasy code-behind do strony .aspx w edytorze, a następnie przejdź do widoku HTML.

  6. W górnej części strony przejrzyj kod @ Page dyrektywy. Kod powinien być podobny do następującego kodu domyślnego:

    <%@ Page language="c#" Codebehind="InheritSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
    

    W tym przykładzie strona .aspx dziedziczy z klasy za kodem o nazwie InheritSamples w CodeBehindSamples przestrzeni nazw. Domyślnie aplikacja internetowa utworzona w programie Visual Studio .NET używa ProjectName.ClassName struktury dla wartości atrybutu Inherits .

  7. W menu Plik kliknij pozycję Zapisz wszystko, aby zapisać formularz internetowy i inne skojarzone pliki projektu.

  8. W środowisku IDE .NET programu Visual Studio w menu Kompilacja kliknij pozycję Kompiluj , aby skompilować projekt.

  9. W menu Project (Projekt) kliknij pozycję Show All Files (Pokaż wszystkie pliki).

  10. W Eksplorator rozwiązań kliknij, aby rozwinąć Bin folder. Zestaw generowany podczas kompilowania projektu z poprzedniej sekcji (która jest CodeBehindSamples.dll w tym przykładzie) pojawia się w folderze Bin .

  11. W programie Visual Studio .NET kliknij prawym przyciskiem myszy stronę w Eksplorator rozwiązań, a następnie kliknij polecenie Wyświetl w przeglądarce, aby uruchomić kod. Etykieta jest wypełniana następującą wartością:

    (Precompiled): Page_Load fired!

Używanie atrybutu Src i kompilowanie na żądanie

Jeśli pliki klas za kodem zostaną skompilowane na żądanie zamiast wstępnie skompilowane, należy użyć atrybutu Src , aby określić ścieżkę względną pliku klasy za kodem. Upewnij się, że podczas wdrażania aplikacji użyto rzeczywistego pliku klasy.

Uwaga 16.

Aby uzyskać więcej informacji na temat potencjalnych problemów podczas tworzenia aplikacji w programie Visual Studio .NET przy użyciu atrybutu Src , zobacz sekcję Odwołania w tym artykule. Program Visual Studio .NET jest przeznaczony do korzystania ze wstępnego kompilowania kodu aplikacji do zestawu zamiast używania podejścia kompilowania na żądanie opisanego w tej sekcji.

  1. Aby dodać nowy formularz sieci Web o nazwie SrcSample.aspx do projektu w programie Visual Studio .NET, wykonaj następujące kroki:

    1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu, kliknij polecenie Dodaj, a następnie kliknij polecenie Dodaj formularz internetowy.
    2. W polu Nazwa wpisz SrcSample.aspx, a następnie kliknij przycisk Otwórz.
  2. Przejdź do widoku Projektu, a następnie dodaj kontrolkę Etykieta formularza sieci Web do strony .aspx.

  3. Kliknij prawym przyciskiem myszy stronę .aspx, a następnie kliknij polecenie Wyświetl kod. Plik związany z kodem zostanie otwarty w edytorze.

  4. W pliku za pomocą kodu dodaj następujący kod do Page_Load zdarzenia:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Przejdź z pliku klasy code-behind do strony .aspx w edytorze, a następnie przejdź do widoku HTML.

  6. W górnej części strony przejrzyj kod @ Page dyrektywy. Kod powinien być podobny do następującego kodu domyślnego:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
    
  7. Aby uprościć ten przykład, usuń plik Global.asax z projektu. Jest to wykonywane tylko w tym przykładzie, aby zapobiec dodatkowym błędom związanym ze stroną za kodem pliku Global.asax .

  8. W menu Plik kliknij pozycję Zapisz wszystko, aby zapisać formularz internetowy i inne skojarzone pliki projektu.

    Uwaga 16.

    Ponieważ chcesz, aby plik klasy za kodem dla tego przykładu był kompilowany na żądanie, nie kompiluj teraz rozwiązania.

  9. Jeśli wykonano kroki wymienione w sekcji Use the Inherits attribute with precompiled classes (Używanie atrybutu Dziedziczy ze wstępnie skompilowanym klasami ), należy usunąć zestaw w Bin katalogu aplikacji przed wykonaniem pozostałych kroków opisanych w tej sekcji.

    Aby uzyskać więcej informacji, odwiedź sekcję Rozwiązywanie problemów w tym artykule.

  10. Aby uruchomić stronę, uruchom program Internet Explorer, a następnie ręcznie wprowadź adres URL strony. Nie wybieraj widoku w przeglądarce ani opcji Przeglądaj za pomocą w środowisku IDE programu Visual Studio .NET. W przeciwnym razie, jeśli używasz programu Visual Studio .NET 2003, strona znajdująca się w kodzie zostanie wstępnie skompilowana do zestawu znajdującego Bin się domyślnie w katalogu. Po wyświetleniu strony zostanie wyświetlony komunikat o błędzie podobny do poniższego:

    Nie można załadować typu "CodeBehindSamples.SrcSample".

    Ten błąd występuje, ponieważ plik klasy za kodem nie został jeszcze skompilowany i nie dołączono jeszcze atrybutu Src w celu odwołania się do pliku klasy za kodem.

  11. Src Dodaj atrybut do dyrektywy w @ Page następujący sposób:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
    

    Atrybut Src znajduje się na liście ze ścieżką względną pliku klasy za kodem (SrcSample.aspx.cs), a wartość atrybutu Inherits jest ustawiona na odwołanie CodeBehindSamples.SrcSample.

  12. W menu Plik kliknij pozycję Zapisz wszystko, aby zapisać formularz internetowy i inne skojarzone pliki projektu. Pamiętaj, że nie kompiluj rozwiązania, ponieważ chcesz, aby plik klasy za kodem dla tego przykładu był kompilowany na żądanie.

  13. Aby uruchomić stronę, uruchom program Internet Explorer, a następnie ręcznie wprowadź adres URL strony. Nie wybieraj widoku w przeglądarce ani opcji Przeglądaj za pomocą w środowisku IDE programu Visual Studio .NET. W przeciwnym razie, jeśli używasz programu Visual Studio .NET 2003, strona znajdująca się w kodzie zostanie wstępnie skompilowana do zestawu znajdującego Bin się domyślnie w katalogu. Na tym etapie strona powinna zostać załadowana w przeglądarce, a etykieta zostanie wypełniona następującą wartością:

    (Src): Page_Load fired!

    Plik klasy za kodem został teraz poprawnie skompilowany na żądanie i działa.

Rozwiązywanie problemów

  • Jeśli wstępnie skompilujesz aplikację w programie Visual Studio .NET, może zostać wyświetlony komunikat o błędzie podobny do poniższego, a następnie spróbuj zastosować metodę kompilowania na żądanie przy użyciu atrybutu Src :

    Komunikat o błędzie kompilatora: CS1595: "ProjectName.CodeBehindClassName" jest zdefiniowany w wielu miejscach; przy użyciu definicji z '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. BIBLIOTEKA DLL

    Należy pamiętać, że nazwy katalogów zgodnie z ciągami YourProjectName w ścieżce wymienionej w komunikacie o błędzie prawdopodobnie będą inne, ponieważ ASP.NET automatycznie obsługuje tworzenie katalogów i ich nazw.

    Jeśli używasz atrybutu Src , należy wykonać następujące kroki, aby rozwiązać problem skojarzony z komunikatem o błędzie:

    1. Usuń katalog YourProjectName, do którego odwołuje się komunikat o błędzie. Może być również konieczne uruchomienie iisreset polecenia z poziomu wiersza polecenia przed wykonaniem tego kroku. W przeciwnym razie może zostać wyświetlony następujący komunikat o błędzie:

      Nie można usunąć GeneratedName.dll: odmowa dostępu.
      Upewnij się, że dysk nie jest pełny lub chroniony zapisem i że plik nie jest obecnie używany.

    2. Usuń zestaw w Bin katalogu aplikacji.

    3. Aby uruchomić stronę, uruchom program Internet Explorer, a następnie ręcznie wprowadź adres URL strony. Nie wybieraj widoku w przeglądarce ani opcji Przeglądaj za pomocą w środowisku IDE programu Visual Studio .NET. W przeciwnym razie, jeśli używasz programu Visual Studio .NET 2003, strona za pomocą kodu zostanie wstępnie skompilowana do zestawu, który znajduje się domyślnie w Bin katalogu.

    Uwaga 16.

    Firma Microsoft zaleca użycie wstępnie skompilowanego podejścia zamiast metody kompilowania na żądanie (przy użyciu atrybutu Src ), jeśli tworzysz aplikacje za pomocą programu Visual Studio .NET, aby uniknąć tego typu problemów.

  • Jeśli chcesz lub jeśli musisz zawierać strony formularza internetowego w jednym pliku, opracuj strony .aspx zawierające kod zamiast pliku klasy za pomocą kodu.

    Aby uzyskać więcej informacji na temat opracowywania jednokrotnych formularzy internetowych w programie Visual Studio .NET, zobacz Dokumentację techniczną wycofaną w programie Visual Studio 2003.

  • Jeśli nie skompilujesz pliku klasy za kodem i jeśli nie dodasz atrybutu Src do @ Page dyrektywy lub jeśli ścieżka wirtualna atrybutu nie jest poprawna, zostanie wyświetlony następujący komunikat o błędzie:

    Nie można załadować typu "CodeBehindSamples.SrcSample".

  • Podczas wdrażania stron .aspx, jeśli skojarzone z nimi pliki klas za kodem są wstępnie skompilowane, musisz wdrożyć zestaw tylko w Bin folderze aplikacji. Nie trzeba wdrażać rzeczywistych plików klas za pomocą aplikacji.

  • W przypadku wdrażania .aspx stron, jeśli skojarzone z nimi pliki klas za kodem nie są wstępnie skompilowane, należy wdrożyć pliki klas za pomocą aplikacji. Ponadto należy dodać Src atrybut do @ Page dyrektywy, ponieważ plik klasy musi być dostępny podczas kompilowania na żądanie.

Informacje

  • Aby uzyskać więcej informacji na temat zestawów, zobacz Zestawy.

  • Aby uzyskać więcej artykułów, przykładów i innych zasobów związanych z programowaniem ASP.NET, zobacz ASP.NET.

  • Aby uzyskać więcej informacji na temat dyrektywy @ Page i jej różnych atrybutów, zobacz @ Page.

  • Aby uzyskać więcej informacji na temat ogólnej składni formularzy sieci Web, zobacz Składnia formularzy sieci Web.

  • Aby uzyskać więcej informacji, zobacz omówienie modelu ASP.NET code-behind.