2009-08-25 8 views

Odpowiedz

12

chciałbym skierować cię do tego MSDN Page (ASP.NET Page Class Przegląd).

Gdy strona jest kompilowany, ASP.NET generuje częściowej klasy w oparciu o .aspx pliku ; ta klasa jest częściową klasą pliku klasy z kodem. Wygenerowany plik częściowej klasy zawiera deklaracje dla elementów sterujących strony. Ta klasa częściowa umożliwia Twój plik z kodem, który ma być używany jako część kompletnej klasy bez wymagającej jawnego zadeklarowania formantów .

Zobacz ten wykres:

alt text http://img30.imageshack.us/img30/7692/msdnchart.gif

ten sposób masz jedną klasę, która zawiera logikę i jedną klasę, która zawiera projektant rzeczy. W czasie kompilacji jest generowany jako całość.

+1

To jedna z tych "pozwala sporządzić wykres z wykresów, które nie powinny być wykresami". – womp

+0

"Model dziedziczenia stron z kodowaniem jest nieco bardziej złożony niż w przypadku stron pojedynczych". Artykuł w artykule w artykule MSDN był bardzo pomocny, aby lepiej zrozumieć ten wykres. –

4

Ponieważ istnieją inne części klasy (Designer rzeczy), które jest ukryte od dewelopera

Na przykład, zamiast tego

public MyBasePage : System.Web.UI.Page 
{ 
    ... 
    protected System.Web.UI.Label lblName; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
    ... 
} 

ASP.NET tworzy te deklaracje w różnych plikach fizycznych, pozostawiając to

public partial class MyBasePage : System.Web.UI.Page 
{ 
    ... 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    ... 
} 

Więcej informacji:

+0

Czy mógłbyś rozwinąć? czy to jest podobne do pliku projektanta WinForm? – andrewWinn

+0

@andrewWinn - tak, jest to równoważne z plikiem projektanta WinForm - w ASP.NET 1.1 wszystkie deklaracje kontrolne znajdowałyby się na górze twojego kodu źródłowego, a następnie zwinięty region na dole skomentował liniami ". Projektant Generowany, nie modyfikuj "gdzie wszystkie zdarzenia zostały połączone. –

+0

@jaun, podany link nie działa. – ShaileshDev

1

Deklaracja częściowa pozwala pisać kod w innych plikach - wystarczy umieścić go w tej samej przestrzeni nazw i nazwać klasę tak samo, a będą one traktowane tak, jakby były w tym samym pliku. Świetnie nadaje się do dodawania funkcjonalności do wygenerowanych plików. Najczęściej używam go do dodawania funkcji/właściwości do moich obiektów LinqToSql.

+0

Dodatkowo pomaga zachować cały brzydki wygenerowany kod od siebie i przypadkowo go edytuję. Musisz teraz znacznie bardziej celowo go edytować ... :) – klabranche

1

Innym powodem częściowych plików jest obsługa przypadku, w którym część definicji klasy jest generowana przez narzędzie (i może być w pewnym momencie zregenerowana), a reszta klasy jest przez ciebie zaimplementowana.

W takich przypadkach niewykorzystanie częściowej klasy może spowodować nadpisanie kodu lub utrudnić wykonanie procesu generowania (jeśli to możliwe).

Z klasami częściowymi w miejscu, wygenerowany kod można łatwo zregenerować bez dotykania kodu.

Kolejnym dobrym tego przykładem jest użycie klas DataContext dla LINQ-SQL: Naprawdę sprytne elementy są generowane w jeden zestaw plików klas częściowych i możesz dostarczać implementacje - dla sprawdzania poprawności itd. - w innych częściach klasę, bezpieczną wiedząc, że ponowna generacja nie zniszczy twojej pracy.

0

Aspx.cs używa klasy PARTIAL, ponieważ kontrolki (np. TextBox, GridView) dostępne w tej klasie są zadeklarowane w pliku .Aspx (tj.Fizycznie inny plik), więc jedna klasa zawiera deklarację kontroli (plik .aspx) i inną logikę biznesową opartą na kontrolkach zadeklarowanych w pliku .aspx. kiedy zostaną skompilowane, traktowane jako całość jako jedna klasa.

Powiązane problemy