Master Pages w ASP.net 4.0

Rozdzielenie struktury witryny na część statyczną oraz dynamiczną jest jednym z podstawowych zadań podczas projektowania szkieletu naszej strony internetowej. Dzięki Master Pages możemy z gór określić najważniejsze warstwy nawigacyjne witryny lub rozdzielić je pomiędzy poszczególne działy czy poziomy dostępu.

Czym są Master Pages w ASP.net?

Struktura witryny oparta na stronach Master Pages pozwala na wyszczególnienie statycznych części witryny na różnych jej poziomach. W praktyce oznacza to dowolność podczas projektowania wielopoziomowego menu serwisu z podziałem na części tematyczne lub zależne od dostępu poszczególnych użytkowników.

Jesteśmy w stanie np. utworzyć menu główne witryny oraz podmenu, które jest przypisane jedynie do wybranej części naszego serwisu. Oczywiście możliwa jest tutaj spora dowolność w rozłożeniu czy liczbie poziomów zagnieżdżenia, ale materiały przykładowe i edukacyjne zawsze powinny zachować przejrzystość.

Interfejs Master Pages

Interfejs witryny ASP.net opartej na Master Pages

Poruszany w poście przykład będzie oparty na jednym menu głównym oraz jednym menu podrzędnym przypisanym do pozycji LeftMenu w menu głównym. Poszczególne podstrony mogą być przypisane do wybranych nadrzędnych Mastr Pages, mogą one posiadać własne tytuły, zestawy szablonów CSS, pliki skryptów, metadane i oczywiście niezależne treści. Budując stronę podrzędną nie musimy dbać o jej architekturę względem pozycji otaczającego menu stron Master Pages, skupiamy się jedynie na właściwej treści dokumentu.

Konstrukcja przykładowej witryny opartej na Master Pages

Najistotniejszymi kontrolkami architektury opartej na Master Pages są kontrolki ContentPlaceHolder oraz Content. Kontrolka Content jest kontenerem przechowującym treści strony podrzędnej, wskazuje ona na konkretną kontrolkę ContentPlaceHolder nadrzędnej strony Master Page. W taki sposób wykonane jest powiązanie pomiędzy stroną podrzędną oraz stroną Master Page. Powiązanie może dotyczyć zarówno treści strony jak i sekcji head.

Struktura witryny Master Pages

Struktura witryny opartej na Master Pages

Na powyższy przykładzie widzimy strukturę powiązań naszej witryny. Strona Site.master jest naszą główną Master Page, zawiera ona najważniejsze menu serwisu dostępne z poziomu wszystkich innych podstron czy podrzędnych Master Pages. Zarówno zwykła podstrona jak i podrzędna Master Page odwołuje się do kontrolki ContentPlaceHolder strony Site.master w identyczny sposób.

Site.master posiada kontrolkę ContentPlaceHolder, której ID=”MainContent”. Kontrolki Content stron Left.master, Default.aspx czy O_mnie.aspx odwołują się poprzez właściwość ContentPlaceHolderID bezpośrednio do kontrolki ContentPlaceHolder o wskazanej wartości ID strony Site.master. Tak więc wszystkie treści zawarte w kontrolkach Content stron podrzędnych ładowane są do kontrolki ContentPlaceHolder strony Site.master.

Przedstawiona zasada działa również w sposób łańcuchowy. Strona Left.master jest stroną Master Page dla StronaLeftMenu.aspx. Jej kontrolka Content przekazuje treści do kontrolki ContentPlaceHolder strony Left.master, ta z kolei czyni to samo względem strony Master Page Site.master. Obowiązuje więc zwarta hierarchia struktury Master Pages.

Tworzenie witryny w oparciu o Master Pages

W przypadku .NET Framework 4.0 tworzymy nową witrynę przy pomocy menu Files -> New -> Web Site, a następnie ASP.NET Web Site. Nasz serwis zostanie wygenerowany z wykorzystaniem struktury Master Pages, która jest aktualnie zalecana, ze względu na swoją efektywność podczas konstruowania serwisów internetowych. Warto jeszcze raz przeanalizować połączenia strukturalne pomiędzy Master Page oraz witryną podrzędną.

Dodawanie nowych witryn odbywa się za pośrednictwem okna Solution Explorer oraz menu kontekstowego Add New Item, a następnie wybieramy Web Form lub Master Page. Musimy zwrócić uwagę, aby było zaznaczone wówczas pole Select master page, dzięki czemu jesteśmy w stanie wybrać stronę nadrzędną dla naszego nowego komponentu.

Nowa strona Master Page

Tworzenie nowej strony Master Page

W przypadku nowej strony Master Page nasze kontrolki Content powinny zostać wygenerowane automatycznie. Tworząc nową stronę Web Form musimy dodać kontrolki Content ręcznie. O ile ID kontrolki Content nie ma wielkiego znaczenia z uwagi na poprawność powiązania, o tyle musimy uważnie dobierać ID dla ContentPlaceHolder strony Master Page oraz właściwość ContentPlaceHolderID kontrolki Content strony podrzędnej.

Przykładowa witryny oparta na strukturze Master Pages zamieszczona została tutaj: Witryna Master Pages w ASP.net 4.0

(Po pobraniu wystarczy otworzyć projekt z menu File -> Open -> Web Site, a następnie wybrać folder główny naszego projektu CodeEnclaveMasterPages)

Loading Disqus Comments ...
Loading Facebook Comments ...