Dlaczego kod odpowiada częściowej klasie stron aspx?Dlaczego pliki z kodem aspx zadeklarowane jako klasy częściowe?
Odpowiedz
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ść.
To jedna z tych "pozwala sporządzić wykres z wykresów, które nie powinny być wykresami". – womp
"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. –
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:
Czy mógłbyś rozwinąć? czy to jest podobne do pliku projektanta WinForm? – andrewWinn
@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. –
@jaun, podany link nie działa. – ShaileshDev
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.
Dodatkowo pomaga zachować cały brzydki wygenerowany kod od siebie i przypadkowo go edytuję. Musisz teraz znacznie bardziej celowo go edytować ... :) – klabranche
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.
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.
- 1. dlaczego stałe Java są zadeklarowane jako statyczne?
- 2. Metody klasy skrótowej PHPUnit zadeklarowane jako "ostateczne"
- 3. Klasy częściowe java
- 4. Częściowe kpiny jako zapach kodu?
- 5. Zmienne zadeklarowane z „:” zamiast „=”
- 6. Dlaczego otrzymuję ten UnsatisfiedLinkError z natywnym kodem?
- 7. dlaczego ciąg nie zadeklarowane w zakresie
- 8. Dlaczego pakiet zasobów kopiuje pliki .png jako obrazy .tiff?
- 9. Testowanie Container.DataItem z kodem inline
- 10. Aby dodać zewnętrzny plik CSS z kodem
- 11. Dlaczego akcje grails powinny być zadeklarowane jako metody zamiast zamknięcia i jakie to ma znaczenie?
- 12. Szablony w języku C++: Częściowe specyfikacje szablonów i klasy znajomych
- 13. C++ Przekazywanie klasy jako parametru
- 14. Gdyby operatorzy być zadeklarowane jako nieczłonkowskimi przyjaciół spoza szablonu
- 15. Ninject: Czy można ładować moduły zadeklarowane jako wewnętrzne?
- 16. Przedmiot klasy jako zmiennej instancji wewnątrz klasy
- 17. Oceń kod C# jako ciąg w pliku aspx
- 18. Czy częściowe pliki konfiguracyjne połączone z web.config za pośrednictwem configSource mogą zostać przekształcone w projekt internetowy?
- 19. Dlaczego deklarować klasy statyczne jako zamknięte i abstrakcyjne w języku C#?
- 20. Szyny renderowe częściowe z: kolekcją
- 21. Łączenie łącza z renderem: częściowe
- 22. W jaki sposób kompilowany jest aspx?
- 23. Jak wywołać metodę kodu z strony aspx?
- 24. Dlaczego enum jest zadeklarowane w osobnym pliku, w Javie?
- 25. Dlaczego nie mogę przechowywać instancji klasy PHP jako zmiennej SESJI
- 26. Dlaczego funkcja urllib.urlopen.read() nie odpowiada kodem źródłowym?
- 27. Dlaczego moje kompilacje Gradle umierają z kodem wyjścia 137?
- 28. Dlaczego praca Spark niepowodzeniem z „kodem wyjścia: 52”
- 29. Dlaczego metoda z kodem Moq zwróciła wartość null?
- 30. Dlaczego to zdarzenie zostało zadeklarowane u anonimowego delegata?
Powinieneś edytować swój tytuł pytania. To nie jest _podane_ pytanie. –
"Nie ma głupich pytań, tylko głupi ludzie" - Pan Garrison, South Park. OK, więc nie ma tu zastosowania, po prostu podoba mi się ten cytat. : D – Powerlord
Jedyne głupie pytanie to pytanie, o które nie pytasz. – belugabob