Technologie internetowe Wykład 8 Ujednolicenie wyglądu serwisu Tematy (Theme) Stanowią rozszerzenie możliwości stylów kaskadowych Pozwalają na formatowanie znaczników HTML oraz kontrolek ASP.NET Pozwalają oddzielić dane formatujące od kodu stron 1 Podkatalog tematów Główny katalog serwisu Katalog przechowujący wszystkie tematy Katalog przechowujący składowe tematu Dołączenie tematu do strony <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Theme="TematWiosna" %>
Wiosna
2 Style CSS w temacie tekst.css body { background-color:Green } * {color:Red} Przeglądarka
Hello 3 Rozróżnienie kontrolek przez SkinID Każda kontrolka wizualna posiada właściwość SkinID SkinID jest opowienikiem klasy w stylach CSS <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" Theme="TematWiosna" %>
Wiosna
Przyciski.skin Odwołania do grafiki w tematach Przyciski.skin Strona.aspx Przeglądarka
Przyciski.skin Strona.aspx Przeglądarka
4 Pierwszeństwo wartości w tematach Temat1: Kontrolki.skin Tematy,aspx <%@ Page Language="C#" StylesheetTheme="Temat1" Theme="Temat2" %>
Tematy
Temat1: Kontrolki.skin Strony MasterPage Definiują schemat wyglądu serwisu Samodzielnie nie mogą być wyświetlane Poprzez wydzielenie części wspólnej ułatwiają konserwację serwisu Korzystają z nich i wypełniają je treścią strony Content. Pozwalają odtworzyć funkcjonalność ramek po stronie klienta Ich kod i wygląd przechowywany jest w plikach z rozszerzeniem .master i .master.cs 5 Tworzenie strony Content Aączenie treści IP.master <%@ Master Language="C#" CodeFile="IP.master.cs" Inherits="IP" %>
Informatyka przemysłówa
Definicja.aspx <%@ Page Language="C#" MasterPageFile="~/IP.master" CodeFile="Definicja.aspx.cs" Inherits="Definicja" %> Informatyka Przemysłowa to dziedzina obejmująca wiedzę z zakresu informatyki i technologii produkcji.
6 Aączenie treści Przeglądarka
Informatyka przemysłówa
Zagnieżdżanie stron MasterPage 7 Zagnieżdżanie stron MasterPage IP.master IP_ogolne.master <%@ Master Language="C#" CodeFile="IP.master.cs" Inherits="IP" %> <%@ Master Language="C#" MasterPageFile="~/IP.master" %>
Informatyka przemysłówa Runat="Server">
Definicja.aspx <%@ Page Language="C#" MasterPageFile="~/IP_ogolne.master" %> Informatyka Przemysłowa to dziedzina obejmująca wiedzę z zakresu informatyki i technologii produkcji.
Modyfikacja właściwości kontrolek MasterPage Strona Master i Content to oddzielne obiekty i klasy Nie ma możliwości bezpośredniego odwołania się do składowych strony MasterPage ze strony Content Właściwość Master strony Content udostępnia metodę FindControl pozwalającą uzyskać taki dostęp 8 Modyfikacja właściwości kontrolek MasterPage IP.master <%@ Master Language="C#" %>
Informatyka Przemysła
Text="Przywitaj" />
Kontrolki użytkownika UserControl Pozwalają kilkakrotnie na stronie lub stronach wykorzystać tą samą funkcjonalność Ułatwiają konserwację serwisu. Stanowią odpowiednik samodzielnej podstrony Ich kod i wygląd jest kodowany w plikach .ascx i .ascx.cs UserControl muszą być rejestrowane na strona, na których będą użyte Nie mogą być wyświetlane samodzielnie 9 Kontrolki użytkownika UserControl <%@ Control Language="C#" AutoEventWireup="true"%> Kontrolka.ascx
Modyfikacja właściwości kontrolek UserControl Strona i kontrolka UserControl to oddzielne obiekty i klasy Nie ma możliwości bezpośredniego odwołania się do składowych kontrolki ze strony zawierającej Metoda FindControl pozwala uzyskać taki dostęp 10 Modyfikacja właściwości kontrolek UserControl <%@ Control Language="C#" AutoEventWireup="true"%> Kontrolka.ascx
Rendering kontrolek UserControl Ponieważ UserKontrol może zostać użyta wielokrotnie na stronie, to identyfikatory jej kontrolek składowych przestały być niepowtarzalne po stronie klienckiej. Dlatego atrybuty name i id są uzupełniane o rozróżniające przedrostki. <%@ Control Language="C#" AutoEventWireup="true"%>
13 Kontrolki CompositeControl using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace MojeKontrolki { [ToolboxData("<{0}:Kalendarz runat=server>{0}:Kalendarz>")] public class Kalendarz : CompositeControl { Label lblInfo; Button btnData; private void btnData_Click(object sender, EventArgs e) { lblInfo.Text = DateTime.Now.ToLongDateString(); } protected override void CreateChildControls() { lblInfo = new Label(); Controls.Add(lblInfo); btnData = new Button(); btnData.Text = "Data"; btnData.Click += new EventHandler(btnData_Click); Controls.Add(btnData); } } } 16 kwietnia 2010 Porównanie typów kontrolek " Kontrolka UserControl: " Tworzona techniką ciągnij i upuść " Wykorzystuje kontrolki serwerowe i HTML " Programowanie oparte na zdarzeniach " Jeden plik .ascx opisuje jedną kontrolkę " Jawny kod zródłowy kontrolki " W każdym serwisie WWW jedna kopia zródeł kontrolki " Kontrolka WebControl: " Tworzona całkowicie w kodzie " Wykorzystuje tylko HTML " Programowanie oparte o przetwarzanie danych formularza " Możliwość kompilacji do pliku DLL " Jeden plik DLL może zawierać wiele kontrolek " Jedna kopia biblioteki DLL może być wykorzystana w wielu serwisach " Kontrolka CompositeControl: " Tworzona całkowicie w kodzie " Wykorzystuje kontrolki serwerowe i HTML " Programowanie oparte na zdarzeniach " Możliwość kompilacji do pliku DLL " Jeden plik DLL może zawierać wiele kontrolek " Jedna kopia biblioteki DLL może być wykorzystana w wielu serwisach 14 Plik konfiguracyjny web.config Plik xml przechowujący ustawienia konfiguracyjne obowiązujące dla całego serwisu lub jego części. web.config
Priorytet ustawień konfiguracyjnych Theme Strona.aspx Web.Config Wynik Temat1 - Temat1 Temat1 Temat2 Tamat1 - Temat2 Temat2 - - - 15 Odwołanie do pliku web.config z poziomu kodu <%@ Page Language="C#" %>
Przywitanie
web.config
Hierarchia plików konfiguracyjnych C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG machine.config 1. Konfiguracja wszystkich aplikacji .NET komputera web.config 2. Konfiguracja wszystkich aplikacji webowych komputera 4. Konfiguracja części Użytkownika 3. Konfiguracja całego serwisu Test Konfiguracja bardziej lokalna ma pierwszeństwo przed ogólniejszą ! 16 Nawigacja w serwisie ASP.NET Informacje o strukturze nawigacyjne serwisu zwykle przechowuje plik Web.sitemap Za część wizualną nawigacji serwisu odpowiadają kontrolki SiteMapPath, Menu, TreeView i SiteMapDataSource Kontrolki nawigacyjne stanowią zwykle składową MasterPage Dodatkowy opis możliwy do Plik Web.sitemap odczytania z poziomu kodu Adres Web.sitemap strony
Tytuł wyświetlany
przez kontrolki nawigacyjne Strona główna O autorze Hobby Muzyka Sport 17 Kontrolki TreeView i SiteMapDataSource Kontrolka SiteMapDataSource pobiera dane z pliku sitemap i przekazuje do kontrolek wizualnych.
Ograniczenie drzewa nawigacji
StartingNodeUrl="~/Hobby.aspx" /> Właściwość StartingNodeUrl pozwala wydzielić jedną z gałęzi drzewa nawigacji dostarczanego do kontrolek wizualnych. 18 Kontrolka Menu Kontrolka wyświetla drzewo nawigacji w postaci dynamicznie rozwijanego menu. Kontrolka SiteMapPath Kontrolka wyświetla aktualne położenie na drzewie nawigacji i pozwala wrócić do węzłów nadrzędnych. Uwaga ! Kontrolka nie korzysta z kontrolki SiteMapDataSource. 19 Drzewo nawigacji z poziomu kodu " Właściwość obiektu Page SiteMap pozwala z poziomu kodu uzyskiwać informacje o strukturze nawigacji " Właściwość SiteMap.CurrentNode udostępnia informacje o aktualnym węzle drzewa nawigacji, w którym się obecnie znajdujemy: " Title - tytuł " Url - adres " Description opis " ParentNode węzeł nadrzędny " ChildNodes kolekcja węzłów podrzędnych
Strona główna O autorze Hobby hlRodzic.Text = SiteMap.CurrentNode.ParentNode.Title; hlRodzic.NavigateUrl = SiteMap.CurrentNode.ParentNode.Url; Muzyka Sport foreach (SiteMapNode node in SiteMap.CurrentNode.ChildNodes) lstDzieci.Items.Add(new ListItem(node.Title, node.Url)); 20