Ноу Інти, лекція, web-форми

Анотація: Абсолютне позиціонування елементів управління. Оброблювач перемикання примірника елемента CheckBox. Модель подій ASP.NET. Автоматичні зворотні посилання. Збереження стану виду. Етапи виконання сторінок на сервері. Обробка подій. Автоматична прив'язка даних. Сторінка як контейнер елементів управління. Програмне управління заголовком сторінки. Створити елемент управління під час виконання. Клас Page. Об'єкти Session, Application, Cache. Об'єкт Request. Об'єкт Response. Об'єкт Server. Об'єкт User.

Файли до лекції Ви можете завантажити тут

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

В основі Web-форма HTML-сторінок лежить дескриптор

. . В активних сторінках інших систем, наприклад PHP. сторінка допускає наявність на ній декількох дескрипторів . (Дескрипторів HTML-форм). У такому випадку ці дескриптори повинні мати атрибути ID з різними значеннями, щоб підтримуюча активні сторінки система могла розрізняти, яка форма надіслала на сервер дані, які потрібно обробити.

Сторінки ASP.NET вимагають, щоб на кожній з них було не більше однієї форми (в принципі, форм на сторінці може бути кілька, але в кожен момент видимої Visible = True може бути тільки одна форма).

Але цього достатньо і для звичайної HTML-сторінки, щоб скільки б елементів управління HTML-форма не містила, з них усіх збирається інформація при підготовці зворотного відсилання на сервер. Коли користувач клацає на кнопці Submit. броузер отримує поточні значення послідовно з кожного елемента управління і формує з них довгий рядок пар ID = значення. Потім цей рядок відправляється на сервер сторінці, зазначеної в атрибуті action дескриптора . використовуючи метод post. або метод get. Якщо атрибут action не вказано, то дані відправляються тій же сторінці. Сам HTML не встановлює на кількість форм ніяких обмежень, а ASP.NET встановлює і для однієї активної сторінки здатна генерувати тільки одну HTML-форму .

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

Ноу Інти, лекція, web-форми


Подання в броузері (клієнта)

Це називається URL-кодуванням повідомлення форми в допустимі символи латинських букв і цифр (для простоти CHETKOB B.M. якраз і введено латинськими літерами), щоб повідомлення не містило керуючих символів. здатних викликати небажаний ефект. Оскільки приймаюча сторінка не вказана, то приймаючої від клієнта дані форми на стороні сервера буде та ж сама сторінка. У нашому прикладі вона нічого не робить. По-перше, вона не розміщена на сервері, по-друге, в ній немає активних серверних елементів, здатних транслювати дескриптори і їх атрибути в змінні коду і їх значення.

Ми вже говорили, що якщо таку сторінку розмістити на сервері, то не дивлячись на розширення .aspx. ASP.NET -машина її все одно обробляти не буде. Для цього HTML - дескриптори потрібно зробити активними (серверними) додаванням атрибуту runat = "server". У зв'язку з цим зробимо два визначення: та сторінка, яка не містить серверних дескрипторів. називається статичної (пасивної). Якщо ж на сторінці є хоч один дескриптор із зазначеним атрибутом, то така сторінка підлягає подальшій обробці системою ASP.NET (або інший) і називається динамічної (активної).

Звідси мораль: статичним сторінкам краще привласнювати розширення htm або html. щоб сервер при їх запиті клієнтом без зволікання здійснював відправку. Якщо ж привласнити статичної сторінці розширення aspx. то все одно вона без змін буде відправлена ​​клієнтові, але перш пройде через систему обробки, що потребують додаткового часу та марної трати машинних ресурсів.

Приклад кодування сторінки

Оболонка має дві основних вкладки з елементами призначеного для користувача інтерфейсу для підтримки активних сторінок, Standard і HTML. Вкладка HTML містить елементи, безпосередньо підтримують стандарт HTML - дескрипторів. і потрібна для того, щоб з мінімальними переробками можна було пристосувати старі сторінки до нової технології ASP.NET. Досить додати до дескрипторів таких елементів атрибут runat = "server". Вкладка Standard містить більш розвинені елементи управління. мають більший набір властивостей і подій, повністю орієнтовані на об'єктне програмування.

При приміщенні елементів з вкладки HTML на сторінку атрибут runat = "server" автоматично не додають і такий елемент середовищем на сервері розглядатись не буде. Отже, кодувати на мові програмування його буде не можна. Перш елемент потрібно позначити як серверний, ввівши безпосередньо вказаний атрибут в дескрипторного представлення елементу, або в оболонці в режимі Design на виділеному елементі викликати контекстне меню і виконати опцію Run As Server Control (зробити серверним елементом управління)

Ноу Інти, лекція, web-форми

Якщо ми розробляємо активну сторінку "з нуля", то краще відразу застосовувати серверні елементи управління. де вже автоматично вбудований дескриптор runat = "server". І більш того, якщо його прибрати, це буде вважатися помилкою. Дескриптори. що представляють серверні елементи, починаються з позначки asp: Тіп_елемента. далі йдуть атрибути елемента.

Для прикладу створимо просту сторінку.

  • Створіть новий сайт командою File / New / Web Site ... налаштувавши вікно майстра приблизно так

Ноу Інти, лекція, web-форми

Після клацання на кнопці OK буде створена початкова сторінка, яка складається з двох файлів: Default.aspx і Default.aspx.cs.

Існує два види кодування сторінок ASP.NET:

  1. Сторінки з вбудованим кодом (поєднаним), коли весь код C # і HTML- дескриптори зберігаються в одному файлі .aspx
  2. Сторінки з прихованим кодом (роздільним, застранічним), коли код C # зберігається окремо від коду з дескрипторами в файлі .aspx.cs

Другий спосіб краще і початкова сторінка сайту створюється саме так. Великий Білл рекомендує використовувати саме другий спосіб, щоб розділити дизайн сторінки і її функціональність. Але для тренування один разок ми скористаємося першим способом.

  • Через панель Solution Explorer видаліть файл з кодом C #

Ноу Інти, лекція, web-форми

  • Відразу під декларацією створіть контейнер