- •Огляд сучасних Інтернет - технологій. Технологія asp.Net
- •Серверні елементи керування Label, TextBox, Button, Image, Table
- •Робота з xml
- •Файли перетворення документа
- •Файли визначення схеми документа
- •Клас XmlReader
- •Клас xPathDocument
- •Елемент управління xml
- •Створення простої сторінки, що використовує інформацію з бази даних
- •Елементи керування для відображення даних (repeater, datalist і datagrid)
- •Шаблони дизайну сторінок asp.Net
- •Зміст за замовчуванням
- •Програмне призначення головної сторінки
- •Вкладені майстер-сторінки
- •Послідовність подій
- •Створення структури переходів Web вузла
- •Елемент керування SiteMapPath
- •Програмне керування TreeView
- •Елемент керування Menu
Зміст за замовчуванням
В головній сторінці може бути визначено зміст, який відображатиметься за замовчуванням. Воно поміщається в елементах ContentPlaceHolder і успадковується всіма дочірніми сторінками. Якщо дочірня сторінка не перевизначити зміст за замовчуванням, воно буде використовуватися при її відображенні. Створимо елемент управління SiteMapPath, Який помістимо в ContentPlaceHolder1:
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</ asp: SiteMapPath>
</ asp: contentplaceholder>
На сторінці MainSchool.aspx він відображатися не буде, тому що в ній визначені обидва елементи Content. Проте, якщо в наступній сторінці визначений лише один з елементів Contentѕ
<% @ Page Language = "C #" AutoEventWireup = "true"
CodeFile = "Voting.aspx.cs"
Inherits = "Voting" MasterPageFile = "~ / MasterPage.master"%>
<asp: Content ContentPlaceHolderID = "ContentPlaceHolder2"
runat = "server">
Яку мову програмування Ви віддаєте перевагу? <br />
<asp: RadioButtonList ID = "rblVoting" runat = "server"
DataSourceID = "SqlDataSource1"
DataTextField = "variant" DataValueField = "id">
</ asp: RadioButtonList> <br />
<asp: SqlDataSource ID = "SqlDataSource1" runat = "server"
ConnectionString ="<%$ ConnectionStrings: PollsConnectionString%> "
SelectCommand = "SELECT [id], [variant] FROM [poll] ORDER
BY [variant] "> </ asp: SqlDataSource>
<br />
<asp: Button ID = "Button1" runat = "server" Text = "Вибрати"
/> <br />
</ asp: Content>
Якщо подивитися її в браузері, побачимо, що в її лівій частині "хлібні крихти" відображаються.
Програмне призначення головної сторінки
У сторінці змісту можна перепризначити її головну сторінку програмно. Для цього потрібно привласнити потрібне значення властивості Page.MasterPageFile. Шаблон поміняється незалежно від того, який шаблон був призначений в директиві @ Page. Але якщо спробуєте виконати це у функціях Page_Load або Page_Init, Отримаєте помилку часу виконання.
Це властивість можна змінити тільки під час обробки події Page_PreInit. Подія Page_PreInit - Найраніша фаза життєвого циклу сторінки, до якої можна отримати доступ. Під час події Init головна і дочірня сторінка вже зливаються в одну, тому пізно міняти шаблон. З цієї причини подія Page_PreInit - Єдине, в обробнику якого можна працювати з головною сторінкою окремо від сторінки змісту:
protected void Page_PreInit (object sender, EventArgs e)
(
Page.MasterPageFile = "~ / MyMasterPage.master";
)
Для того щоб із сторінки змісту звернутися до елементів управління головної сторінки, можна скористатися функцією FindControl. Безпосередньо звернутися до них не можна, оскільки це захищені члени.
Label mpLabel = (Label) Master.FindControl ( "masterPageLabel");
if (mpLabel! = null)
(
/ / Set content page title to master page control
Title.Text = mpLabel.Text
)
Сторінки шаблону можуть мати методи і властивості. Щоб можна було звертатися до них, потрібно використовувати директиву @ MasterType. При цьому стає доступний клас сторінки шаблону дизайну через універсальна посилання. Атрибут TypeName задає ім'я типу, а VirtualPath - Шлях щодо кореневого каталогу web-додатку до файлу шаблону:
<% @ Page language = "C #" masterpagefile = "~ / Site3.master"%>
<% @ Mastertype virtualpath = "~ / Site3.master"%>
Властивості можуть бути визначені в класі головну сторінку:
public String FooterText (
get (
return Footer.Text;
)
set (
Footer.Text = value;
)
)
Таким чином, сторінка дозволяє доступ ззовні до властивостей своїх елементів.
Сторінка змісту міняє цю властивість, а елемент керування AdRotator знаходить з допомогою FindControl:
void Page_Load ()
(
Master.FooterText = "This is a custom footer";
AdRotator ad = (AdRotator) Master.FindControl ( "MyAdRotator");
if (ad! = null)
(
ad.BorderColor = System.Drawing.Color.Purple;
ad.BorderWidth = 10;
)
)
