Створення сторінки - Сторінка 10

Written on 27 Грудня 2006 . Posted in ASP.NET

ЗМІСТ

Створення сторінки

Використання шаблонів дизайну накладає свої вимоги на сторінки. Оскільки шаблон містить елементи керування ContentPlaceHolder, сторінка повинна містити елементи керування Content, які містять код розмітки та інші елементи керування, які відображатимуться на результуючій сторінці. На сторінці не повинно бути жодних серверних елементів керування або коду розмітки поза елементами керування Content.

Як і у випадку з шаблоном, код логіки сторінки створюється звичайним чином. Єдина відмінність у тому, що сторінка не має власних об'єктів типу HeadControl, тому потрібно використовувати посилання на сторінку шаблону через властивість Master.

Щоб прив'язати сторінку до шаблону, використовується атрибут MasterPageFile директиви Page. Якщо ж необхідно прив'язати один і той же шаблон до всіх сторінок директорії, то немає необхідності вказувати атрибут MasterPageFile для кожної сторінки, достатньо задати базовий шаблон у файлі web.config.

Крім того, ASP.NET дозволяє встановлювати тему оформлення програмним чином. Як було сказано вище, завантаження та зв'язування із шаблоном оформлення відбувається під час підготовки сторінки до ініціалізації. Тому, якщо потрібно змінити шаблон оформлення сторінки, потрібно робити це в обробнику події PreInit.

Обробка шаблонів середовищем ASP.NET

Під час першого звернення до будь-якої сторінки, ASP.NET здійснює пошук та компіляцію збірок для всіх шаблонів у директорії. Ця операція займає деякий час, що залежить від кількості сторінок шаблонів у директорії, але виконується лише один раз. Тому, якщо вдиректорії присутні шаблони, що не використовуються, це не призводить до втрат продуктивності в процесі роботи програми, єдина незручність - додатковий час, а компіляцію непотрібних збірок для сторінок, що не використовуються.

Потім сторінка проходить всі ті кроки, які описані вище в цій статті, в результаті чого генерується HTML-код, який відправляється клієнту. В отриманому браузером HTML коді вже не можна визначити, яка частина коду задана у шаблоні оформлення, а яка частина коду визначена на самій сторінці, оскільки елементи керування ContentPlaceHolder і Content не мають HTML-відповідей і не породжують додаткових тегів, крім свого вмісту.

Оскільки шаблон є підмножиною сторінки, то можна створювати вкладені шаблони, вказуючи для шаблону в директиві Master шлях до іншого шаблону за допомогою атрибута MasterPageFile. Для цього необхідно в основному шаблоні визначити елементи керування ContentPlaceHolder, а в «дочірніх» шаблонах поруч із ContentPlaceHolder елементами визначити елементи керування Content для заміщення вмісту елементів ContentPlaceHolder базового шаблону.

Використання різних шаблонів для різних браузерів

Будь-якому Web-розробнику добре відомо, що різні браузери (наприклад, Microsoft Internet Explorer, Netscape Navigator, Mozilla FireFox та ін) по-різному обробляють HTML код і, що особливо важливо, мають кілька різних програмованих моделей, що ускладнює створення клієнтських сценаріїв.