- witryna z dwoma stronami wzorcowymi
 - użytkownik ma do wyboru, z której strony wzorcowej chce korzystać
 - strona zawartości modyfikuje dane w kontrolkach strony wzorcowej
 

W tym celu należy wykonać następujące kroki:
- Tworzymy projekt MyMasterPage
 - Usuwamy Default.aspx - nie jest potrzebna taka strona, według domyślnego szablonu
 - Dodajemy stronę wzorcową Add->New Item->Master Page->nazywamy go Main.Master
 - Na górze strony dodajemy sobie napis w nagłówku z tytułem strony, oraz jakieś linki jako menu:
<h1>Moja strona</h1> <hr /> <div style="width:auto; clear:both;"> <p>Menu: <a href="~/Default.aspx">Home</a>, <a href="http://www.google.com">Wyszukiwarka</a></p> <hr /> </div>
 - 
Na dole dodajemy stopkę:
<div style="width:auto; clear:both;"><hr /><p>Footer</p></div>
 - Dodajemy stronę zawartości Add->New Item->Web Content Form->nazywamy Default.aspx i wybieramy Main.Master jako strona wzorcowa dla tej strony
 - Na stronie dodajemy DopDownList i wypełniamy go elementami Master (o wartości Master.Master) oraz Secondary (o wartości Secondary.Master)
 - Dodajemy przycisk "Submit" (ustawiamy mu właściwość UseSubmitBehavior=true)
 - Pierwszy test - powinniśmy zobaczyć stronę złożoną ze strony wzorcowej i zawartości
 - Dodajemy drugą stronę wzorcową o nazwie Secondary:
 - w której nagłówek jest następujący:
<h1>Moja strona</h1> <hr /> <div style="width: 200px; float: left; height: auto;"> <p>Menu: <a href="~/Default.aspx">Home</a>, <a href="http://www.google.com">Wyszukiwarka</a></p> </div>
 - stopka jest taka sama jak poprzednio
 - a główny ContentPlaceHolder znajduje się wewnątrz obszaru: 
<div style="width: auto; float: left;">
 - Dla DropDownList'y obsługujemy zdarzenie "SelectedIndexChanged":
 - Dla strony Default.aspx obsługujemy zdarzenie "Page_PreInit":
protected void Page_PreInit(object sender, EventArgs e) { if (Session["master"] != null) { MasterPageFile = (string)Session["master"]; } } - Teraz możemy już przetestować jak działa zmiana szablonu strony wzorcowej po kliknięci na przycisk Submit (uwaga po zmianie trzeba na niego kliknąć dwa razy)
 - Teraz dodatkowo jeszcze mały przykład w dostępie do strony wzorcowej z poziomu strony zawartości:
 - 
Dodajemy etykietę Label do obydwu stron wzorcowych: 
<asp:Label ID="Label1" runat="server"></asp:Label>
 - 
Na stronie zawartości dodajemy TextBox: 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 - 
obsługujemy zdarzenie Page_Load: 
((Label)Master.FindControl("Label1")).Text = this.TextBox1.Text; - Co w efekcie daje możliwość wyświetlenie w etykiecie znajdującej się na stronie wzorcowej informacji ze strony zawartości.
 
Session["master"] = this.DropDownList1.SelectedValue;
Na końcu chciałbym dodać, że kod z przykładu dostępny jest tutaj.
  





zobacz cały materiał:
OdpowiedzUsuń70-562: Dostosowanie i Personalizacja Aplikacji Web [PL]
Bardzo interesująca seria wpisów. :) W punkcie 7, zamiast Master.Master powinno chyba być Main.Master...
OdpowiedzUsuń