Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.49 Кб
Скачать

Зміст за замовчуванням

В головній сторінці може бути визначено зміст, який відображатиметься за замовчуванням. Воно поміщається в елементах 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;

    )

  )

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]