Лекція 2. Анатомія ASP.NET. ASP.NET в дії. (Документація, вихідні), Документація, Програмування, статті

Розум суто математичний буде правильно працювати, тільки якщо йому заздалегідь відомі всі визначення і почала
Блез Паскаль


Введення


ASP.NET – Один з компонентів .NET Framework. Перерахуємо коротко основні риси цієї технології:



ADO.NET – набір класів, призначених для доступу до баз даних Microsoft SQL Server, до джерел даних OLEDB і до файлів XML.


Різні частини вашого проекту можуть бути написані на різних мовах, це називається interoperability. Ми спробуємо написати проект, де одна зі сторінок буде на Visual Basic, а інша на С #.


Комп'ютерні мови бувають компільованих і інтерпретуються. В процесі компіляції програми, написаної на компільованих мов, створюється виконуваний файл (В Windows – exe). Він виконується швидко, але не може виконуватися на іншій платформі. Машина, на якій вона виконується, повинна мати схожу конфігурацію. Наприклад, якщо програма використовує dll, то ця бібліотека повинна бути встановлена ​​і на цільовий машині. Інтерпретовані програми компілюються в момент виконання, тому вони працюють повільніше, але не залежать від конкретної машини. В. NET Framework застосовується двоетапна компіляція, тобто перший етап – це компіляція в MSIL, а друга – компіляція «Just-in-time» компілятором під час виконання. JIT-компілятор оптимізує код для тієї машини, на якій він виконується. У ASP.NET сторінка компілюється в MSIL при першому зверненні клієнта до сторінки. Разом з нею компілюються класи, які вона використовує. Якщо ви використовуєте Visual Studio 2005, можна не очікувати першого запиту, а примусово скомпілювати всі сторінки вашого проекту. Це дозволить виявити синтаксичні та інші помилки.


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


Ви можете ознайомитися з проектом на сайті http://go-mono.com/archive/xsp-0.10.html знаходиться XSP – сервер ASP.NET, який може служити розширенням сервера Apache – основного сервера * nix – систем.


Як працює ASP.NET


Коли ми істалліруем. NET, у відповідних директоріях C: WINDOWSMicrosoft.NETFramework міститься також файл aspnet_isapi.dll. Це – ISAPI-розширення, і призначене воно для отримання запитів, адресованих ASP.NET-додатків (*. aspx *. asmx і т.д.), а також створення робочих процесів aspnet_wp.exe, обративающіх запити. Інтернет-сервер – IIS або вбудований в WebMatrix або вбудований в Visual Studio Cassini – Використовують це розширення, коли їм треба обробити звернення до сторінок з розширенням aspx.


Цей модуль розбирає (parse) вміст сторінок aspx разом з файлом відокремленого коду і генерує клас мовою сторінки з об'єктом Page. Сторінка aspx відрізняється від звичайної HTML-сторінки наявністю серверних елементів управління, які описуються спеціальними тегами. Для розуміння роботи ASP.NET важливо відзначити, що кожному тегу елемента управління відповідає свій член класу сторінки. Наприклад,

 <asp:Label ID="Label1" runat="server"> </ asp: Label>

перетвориться в

 @__ctrl = new global::System.Web.UI.WebControls.Label();

Основне завдання об'єкта Page – посилка HTML-код у вихідний потік. Цей клас компілюється в бібліотеку. Dll, яка завантажується в процес веб-сервера. Наступні запити до сторінки також обробляє dll, якщо вихідний код сторінки не змінюється. Всі ці файли можна знайти в директорії «Temporary ASP.NET Files» поточної версії. NET. Якщо ми працюємо в середовищі розробки Visual Studio 2005 або VWD, для кожного проекту створюється своя піддиректорії.


Типи сторінок і папок проекту


У проект можна додавати нові файли через діалог New File. Якщо зняти відмітку з прапорця "Place code in separate file", Visual Studio створить один файл, в якому буде і сторінка, і код для її обробки (в стилі WebMatrix).


Всі файли поміщаються в директорію проекту. І навпаки, всі файли, які будуть поміщені в директорію проекту, стануть його частиною. Для веб-сайтів не існує спеціального файлу. Csproj, в якому перераховувалися б його складові частини, як це було в попередніх версіях Visual Studio. Структура рішення (solution) описується в текстовому файлі. Sln. У рішення можуть входити кілька веб-сайтів і бібліотек.


У ASP.NET 2.0 є спеціальні піддиректорії проекту для різних типів файлів. Наприклад, у папці App_Code зберігаються загальнодоступні класи, текстові файли та деякі інші (DataSet, діаграма класів). Файли з розширенням. Cs або. Vb, що потрапили туди, автоматично компілюються, коли запитується будь-яка сторінка проекту. У App_Data містяться джерела даних, що використовуються в проекті – бази даних Access і Microsoft SQL, XML-файли. До цієї директорії можна отримати доступ ззовні, а тільки з самого додатка. У папці Themes зберігаються теми проекту (лекція 13). Застосування тим дозволяє налаштувати однаковий зовнішній вигляд сайту і централізовано керувати ним. У App_GlobalResources знаходяться ресурси, наприклад таблиці рядків, які можна створювати на різних мовах. Мова ресурсів вибирається автоматично залежно від налаштувань браузера користувача. У папці App_WebReferences містить посилання на використовувані веб-сервіси.


Можна створювати власні піддиректорії проекту, наприклад, для зберігання картинок.


Проект на 2 мовах


Проект Web-сайту складається з сторінок aspx і класів, які використовуються на сторінках (і, звичайно, різноманітних ресурсів). Файли з класами, до яких можна звернутися з різних сторінок, поміщають в спеціальну папку App_Code. При компіляції вони поміщаються в одну збірку – бібліотеку. Dll у форматі portable executable. Абсолютно неважливо, якою мовою написано клас, якщо це мова. NET.


Готові скомпільовані збірки сторонніх виробників теж можна використовувати в проекті. Їх поміщають в папку Bin. При цьому їх необхідно імпортувати в проект.

 <%@ Import Namespace=”MyCustomNamespace” %>

Створіть новий проект. Додайте в нього файл, вибравши тип файлу Class і мова Visual Basic. Середа сама запропонує помістити його в папку Code. Назвемо його CustomClass. У нього буде дуже простий код. Усього одна функція, яка додає слово Hello до імені, переданому в якості параметра.

 Imports Microsoft.VisualBasic
Public Class CustomClass
Public Function GetMessage (ByVal name As String) As String
        Return “Hello,  ” & name
    End Function
End Class

Додайте в проект сторінку CodeFolder_cs.aspx. Це сторінка написана на C #, але вона створює клас, написаний на VB.NET.

 <%@ page language=”C#” %>
<script runat=”server”>
  void Button1_Click(object sender, EventArgs e)
  {
    CustomClass c = new CustomClass();
    Label1.Text = c.GetMessage(TextBox1.Text);
  }
</script>
<html>
<head>
    <title>ASP.NET Inline Pages</title>
</head>
<body>
    <form id=”Form1″ runat=”server”>
      <h1>Welcome to ASP.NET 2.0!</h1>
      <b>Enter Your Name:</b>
      <asp:TextBox ID=”TextBox1″ Runat=”server”/>
<asp:Button ID="Button1" Text="Click Me" OnClick="Button1_Click" Runat="server"/>
      <br />
      <br />
<asp:Label ID="Label1" Text="Hello" Runat="server" />
    </form>
</body>
</html>

На сторінці визначена форма, що нагадує форму Windows-програми. На ній є кнопка, натискання на яку обробляється у функції Button1_Click. У ній створюється клас і викликається його функція GetMessage з параметром, який береться з елементу редагування. Значення, що повертається записується в елемент Label1. У більш простому варіанті це виглядає так:

 Label1.Text = “Hello “+TextBox1.Text;

Клас може бути написаний на C #, а використовуватися з сторінки на Visual Basic.

 using System;
public class CustomClass2
{
    public String GetMessage(String input) {
        return “Hello from C# ” + input;
    }
}
Код сторінки CodeFolder_vb.aspx:
<script runat=”server”>
Sub Button1_Click (ByVal sender As Object, ByVal e As System.EventArgs)
    Dim c As New CustomClass2
    Label1.Text = c.GetMessage(TextBox1.Text)
  End Sub
</script>

Однак помістити в директорії App_Code можна тільки на одній мові. Якщо там буде знаходитися файли на різних мовах, проект не буде компілюватися. Для того, щоб використовувати дві мови, необхідно створити піддиректорію, додати її у файлі web.config і помістити в неї файли на іншу мову.


Реєстрація у файлі web.config:

<configuration>
<system.web>

<compilation>
<codeSubDirectories>
<add directoryName=”VBCode”/>
</codeSubDirectories>
<codeSubDirectories>
<add directoryName=”CSCode”/>
</codeSubDirectories>
</compilation>

</system.web>
</configuration>

Директиви


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


Сінтаскіс оголошення директив такий:

 <%@ [Directive] [Attribute=Value] %>

Можна оголосити кілька директив одночасно:

 <% @ [Directive] [Attribute = Value] [Attribute = Value]%>

У ASP.NET 2.0 існує 11 директив.




















































Директива Атрибути Опис
@Assembly Name
Src
Імпортує на сторінку або в елемент керування зборку із заданим ім'ям
@Control такі ж, як у Page Застосовується для завдання властивостей при створенні власних користувальницьких елементів управління.
@Implements Interface Вказує, що клас даної сторінки реалізує даний інтерфейс
@Import Namespace Імпортує простір імен
@Master такі ж, як у Page Застосовується на сторінках шаблона дизайну (Master page). Нова в ASP.NET 2.0
@MasterType TypeName
VirtualPath
Дає строго типізовану посилання на клас, що міститься в шаблоні дизайну. Дозволяє звертатися до властивостей цього класу.
@OutputCache Duration
Location
VaryByCustom
VaryByHeader
VaryByParam
VaryByControl
Управляє кешуванням сторінки або елемента керування. Детальніше описана в лекції 15.
@Page см. Нижче Атрибути, пов'язані з даною статтею. Вживається тільки у файлах з розширенням aspx
@PreviousPageType TypeName
VirtualPath
Сторінка, з якої були відправлені дані, введені користувачем. Нова в ASP.NET 2.0. Раніше сторінки відправляли пост тільки самим собі.
@Reference Page
Control
Сторінка або елемент керування, який потрібно компілювати разом з даною
@Register Assembly
Namespace
Src
TagName
TagPrefix
Створює псевдоніми для просторів імен і користувальницьких елементів керування

Поки що докладно розглянемо 2 з них – Page і Import.


Директива Page


Директива Page дозволяє встановити параметри сторінки, які будуть використані під час компіляції. Ця директива використовується частіше інших, тому її необхідно розглянути більш детально.


Найбільш важливі атрибути директиви перераховані в таблиці:














































AutoEventWireup Автоматична обробка подій сторінки
Buffer Управляє буферизацією сторінки. За замовчуванням буферизується
ClassName Дозволяє призначати ім'я класу, згенерованого цією сторінкою
CodeFile Назва файлу з відокремленим кодом для даної сторінки
Culture Встановлює набір регіональних параметрів, тобто мова, формат валюти, дати, чисел
Debug Якщо true, на сторінку виводиться налагоджувальна інформація
Trace Висновок трасування інформації
EnableViewState Збереження стану сторінки. За умовчанням вона зберігається
EnableTheming Дозволяє включити або вимкнути підтримку тем оформлення. За замовчуванням включено
Inherits Клас, від якого успадковується клас даної сторінки в технології відокремленого коду
IsAsync Показує, обробляється чи сторінка асинхронно.
Language Мова, що використовується під впровадженому коді
WarningLevel Найбільший допустимий рівень попереджень компілятора
CompilerOptions Опції компілятора

Простору імен бібліотеки класів


Бібліотека класів FCL містить тисячі класів. Для зручності використання вони об'єднані в простори імен. Щоб звертатися до класів, оголошеним у просторі імен, без вказівки повного шляху, його потрібно імпортувати в проект. Якщо ви хочете працювати з файлами формату XML, вам потрібно імпортувати простір імен System.XML. У сторінках відокремленого коду на C #, як завжди, використовується директива using.

 using System. XML;

На сторінці aspx – директива Import

 <%@ Import Namespace= “System.XML ” %>

Для кожного простору імен потрібна окрема директива Import.


Visual Studio.NET і VWD за замовчуванням включають в сторінку на C # найбільш часто використовувані простору імен. На сторінку aspx імпортувати ці простори імен не потрібно.

 using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

Наприклад, у просторі імен System.Web.UI знаходиться клас Page, без якого не може існувати жодна сторінка ASP.NET, в System.Web – HttpRequest і HttpResponse.


Програма перегляду класів


Як же дізнатися, які класи є в бібліотеці класів. NET? Для цього призначений Object Browser (Visual Studio 2005) і Class Browser WebMatrix. Щоб відкрити Object Browser в Visual Studio 2005 або VWD Express, виберіть пункт меню View-> Object Browser. Якщо ви використовуєте WebMatrix, то Class Browser знаходиться в тій же папці меню Windows, що і WebMatrix – All Programs-> ASP.NET WebMatrix. У форматі ASP.NET Class Browser включений до складу Framework SDK.


Усі наявні простору імен показані як вузли дерева. Нас цікавить System.Web. Розкрийте цей вузол. Усередині виявилися інші простори імен. Розкрийте System.Web.UI. Там знаходиться велика кількість класів, інтерфейсів, делегатів, перерахувань. Їх можна впізнати по іконка. Наприклад, іконка делегата схожа на валізу.


– Клас


– Інтерфейс


– Подія


– Перерахування


– Метод


Виберіть клас Page. У віконці праворуч з'явиться список його методів, полів і подій. Якщо вибрати метод, в третьому вікні під другим з'явиться його опис. Всередині класу знаходяться ще дві папки – класів-прабатьків (Base Classes) і класів-нащадків. Всі їх теж можна переглянути. Object Browser показує і класи поточного проекту. Якщо класи закоментований тегами генерації документації XML, то ця інформація теж видно, наприклад Summary, Parameters, Values, Returns.


Досліджуючи властивість IsPostBack, можна дізнатися, що воно має булеве значення, і призначене тільки для читання.


Перевірка відповідності стандартам


Існують різні стандарти HTML і XHTML. Пізніші стандарти пред'являють більш суворі вимоги, наприклад, XHTML 1.1 не дозволяє користуватися <br> та іншими простими тегами без закриває слеша <br/>. У той же час старі стандарти не підтримують нові теги.


У заголовку HTTP-запиту вказується стандарт документа, Visual Studio 2005 у всіх сторінках вказує такий стандарт:

 <! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Transitional / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Цей стандарт вимагає наявності атрибуту xmlns в теге <html> – посилання на сайт з описом стандарту.

 <html xmlns=”http://www.w3.org/1999/xhtml”>

Багато сторінок, зроблені для попередніх версій ASP.NET, не мають такого атрибута. В панелі інстументов Html Source Editing також знаходиться випадаючий список, в якому можна вибрати стандарт або версію браузер, для якого призначена ця сторінка. Сторінка автоматично перевіряється на відповідність цьому стандарту.


Властивості сторінки


Сторінка – Це основа всього в Web-додатку.


Клас System.Web.UI.Page інкапсулює функціональність, необхідну для створення та обробки сторінок ASP.NET.


Кожна сторінка ASP.NET – це об'єкт класу, який автоматично генерується ядром ASP.NET. Клас успадковується від асоційованого з сторінкою класу, якщо ми використовуємо відокремлений код, або прямо успадковується від System.Web.UI.Page, якщо код на C # вбудований в сторінку. Середовище також створює конструктор за умовчанням.


Щоб переконатися в цьому, можемо створити сторінку "PageType.aspx":

 <%@ Page Language=”C#” %>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title> Тип сторінки </ title>
</head>
<body>
    <div>
<% Response.Output.Write ("Тип даної сторінки {0}", this.GetType ());%>
    </div>
     <div>
<% Response.Output.Write ("Базовий тип даної сторінки {0}", this.GetType (). BaseType);%>
    </div>
</body>
</html>

Ось результат:

 Тип даної сторінки ASP.pagetype_aspx
Базовий тип даної сторінки System.Web.UI.Page

Така ж сторінка, створена за технологією поділу коду.

 <% @ Page Language = "C #" AutoEventWireup = "true" CodeFile = "PageType.aspx.cs" Inherits = "PageType"%>

пише результат

 Тип даної сторінки ASP.pagetype_aspx
Базовий тип даної сторінки PageType

Те, що PageType – спадкоємець System.Web.UI.Page, прописано у файлі відокремленого коду:

 public partial class PageType : System.Web.UI.Page

До поточного об'єкту сторінки можна звертатися як до змінної Page. Page – це контейнер елементів управління цієї сторінки, тому містить в собі колекцію Controls. Якщо в теге <head> присутній атрибут runat = "server", то в Page міститься і поле Header, через яке можна управляти заголовком сторінки. Наприклад, поміняти назву сторінці в заголовку браузера, призначити файл каскадних таблиць стилів.

 <script runat=”server”>
    protected void Page_Init(object sender, EventArgs e)
    {   
        HtmlLink myHtmlLink = new HtmlLink();
        myHtmlLink.Href = “printable.css”;
        myHtmlLink.Attributes.Add(“rel”, “stylesheet”);
        myHtmlLink.Attributes.Add(“type”, “text/css”);
        Page.Header.Controls.Add(myHtmlLink);
Page.Header.Title = "Новий заголовок";
   }
protected void Page_Load (object sender, System.EventArgs e)
    {
        Style bodyStyle = new Style();
        bodyStyle.ForeColor = System.Drawing.Color.Blue;
        bodyStyle.BackColor = System.Drawing.Color.Beige;
Page.Header.StyleSheet.CreateStyleRule (bodyStyle, null, "p");
    }
</script>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    <title>Hello ASP.NET</title>
</head>
<body>
<p> Вчіться програмувати на ASP.NET </ p>
</body>
</html>
У цьому прикладі ми поміняли текст заголовка. Запустіть цю сторінку.
В отриманому HTML-коді всередині тега <title> коштує вже не «Untitled Page»,
а «Новий заголовок», який був встановлений через Page.Header.Title.
Був створений стиль для тега <p>, що відбилося таким чином:
<style type=”text/css”>
      p { color:Blue;background-color:Beige; }
</style>

Зовнішня сторінка CSS була імпортована з файлу.

 <link href="printable.css" rel="stylesheet" type="text/css" /> <style type="text/css">

Якщо атрибут AutoEventWireup, який присутній в заголовку сторінок, що генеруються VS, встановлено, то методи з префіксом Page_ автоматичної призначаються обробниками подій сторінки.


У сторінки є дві важливі властивості – Response і Request. Властивість Response має тип HttpResponse. Response сторінки можна сприймати як вихідний потік. Весь HTML код генерується сторінки в принципі може бути виведений через запис в цей потік. Це був звичайний спосіб роботи розробників asp. Але в ASP.NET є більш зручні засоби виведення даних за допомогою серверних елементів керування. Response краще використовувати для запису Cookies, для завдання різних параметрів заголовка – керувати кешуванням, властивістю Expires.


Ось приклад з MSDN:

     HttpCookie MyCookie = new HttpCookie(“LastVisit”);
    DateTime now = DateTime.Now;
    MyCookie.Value = now.ToString();
    MyCookie.Expires = now.AddHours(1);
    Response.Cookies.Add(MyCookie);

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

 <head runat=”server”>
<%Response.Charset = “windows-1251”; %>
<title> Російська кодування </ title>
</head>

Функція Response.Redirect перенаправляє браузер на іншу сторінку.

 Response.Redirect ("NavigationTarget.aspx? Name =" + System.Web.HttpUtility.UrlEncode (Name.Text);

Тут формується командний рядок з параметрами QueryString, які цільова сторінка може прочитати.


Аналогічно властивість Request – це запит, переданий на сервер для виведення потрібної сторінки. Він має тип HttpRequest. У ньому зберігається все про клієнта, включаючи налаштування його браузера, файли-cookie і дані, запроваджені ним форму.

 NameLabel.Text = Server.HtmlEncode (Request.QueryString ["Name"]);

Події сторінки


Робота середовища ASP.NET з сторінкою починається з отримання та обробки Web-сервером IIS запиту до даної сторінки і передачі цього запиту середовищі виконання ASP.NET. Виконавча аналізує, чи потрібно компілювати сторінку або можна видати як відповідь сторінку з кеша.


Потім починається життєвий цикл сторінки. Він починається з етапу PreInit. Після отримання запиту Виконавча завантажує клас викликається сторінки, встановлює властивості класу сторінки, вибудовує дерево елементів, заповнює властивості Request і Response і властивості UICulture і викликає метод IHttpHandler.ProcessRequest. Після цього середовище виконання перевіряє, яким чином була викликана ця сторінка, і якщо сторінка викликана шляхом передачі даних з іншої сторінки, про що буде розказано далі, то Виконавча встановлює властивість PreviousPage.


На цьому етапі встановлюється також властивість IsPostback об'єкта Page, яке дозволяє дізнатися, в перший чи раз завантажується форма або вона повинна формуватися як результат обробки даних, введених користувачем.


У обробниках подій сторінки можна перевірити це властивість:

     if (!Page.IsPostBack)
    {
/ / Обробляти
    }

Далі відбувається ініціалізація сторінки – подія Init. В часі ініціалізації сторінки створюються дочірні користувача елементи управління і їм ставить властивості id. В цей же час до сторінки застосовуються теми оформлення. Якщо сторінка викликана в результаті постбека, то на цьому етапі дані, відправлені на сервер, ще не завантажені у властивості елементів керування. Програміст може ініціалізувати їх властивості.


Завантаження. Під час події Load встановлюються властивості елементів керування на підставі інформації про стан, якщо сторінка створюється в результаті надсилання даних форми.


Якщо на сторінці існують валідатори (класи перевірки даних, див. лекцію 5), то для них викликається метод Validate (). Потім викликаються обробники подій (за умови, що сторінка генерується у відповідь на дії користувача).


У методі Render генерується сам HTML-код виведеної сторінки. При цьому сторінка викликає відповідні методи дочірніх елементів, ті – методи своїх дочірніх елементів. У методі Render код виводиться в Response.OutputStream. Сама сторінка теж вважається елементом управління – клас Page є спадкоємцем класу Control. Якщо на сторінці є блоки відображення, вони стають частиною функції відтворення (rendering).


Нарешті, сторінка вивантажується з пам'яті сервера і відбувається подія Unload.


Під час життєвого циклу сторінки відбуваються різні події. Можна включити трасування сторінці, щоб подивитися порядок з виникнення.

 <% @ Page Language = "C #" Trace = "true" TraceMode = "SortByTime"%>

Під час трасування не виводиться подія Unload, тому що воно відбувається, коли весь код вже виведено. Під час обробки цієї події потрібно звільнити ресурси, наприклад з'єднання з базами даних або відкриті файли.


Повний список подій сторінки, які можна перевизначити в класі сторінки:



Для всіх подій визначені обробники – віртуальні функції OnInit, OnLoad. Коли AutoEventWireup одно true, в класі автоматично оголошуються функції-обробники подій з префіксом Page – Page_Load, Page_Init і так далі. Одне з найпопулярніших подій – це Page_Load. Створюючи нову сторінку, Visual Studio створює обробник цієї події. Тут можна змінити зовнішній вигляд елементів і створити нові. Можна встановити AutoEventWireup в false. У такому випадку треба писати перевантажені версії віртуальних функцій.

 protected override void OnInit(EventArgs e)
{
}

Так можна добитися прискорення роботи сторінки.


Способи впровадження коду ASP.NET в сторінку.


Є три способи впровадити код на програмному мовою в сторінку aspx.


Блок <script runat="server"> </ script> називається блоком оголошення коду.


Тег <script> схожий на той, яким вводяться скрипти JavaScript. Але з великим відзнакою – скрипт виконується на сервері. Тому необхідно задавати атрибут runat = "server". Атрибут language у нього може приймати значення С #, VB, J #. У сторінках з відокремленим кодом можна писати і на C + +. За замовчуванням приймається значення мови Visual Basic, тому не треба забувати вказувати мову, коли пишете на С #. Але немає необхідності це робити, якщо мова визначено в директиві Page. Можна писати на різних мовах в одній програмі, але не можна змішувати різні мови на одній сторінці.


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


Тут можна перевизначити віртуальні методи класу сторінки. У блоці також можна оголошувати класи, але вони будуть внутрішніми по відношенню до класу сторінки.


Блоки відображення


Будь-який код, впроваджений за допомогою <% і%>, обробляється під час події Render як частина сторінки.


У тілі блоку <%%> допустимо оголошувати змінні, тоді вони будуть локальними для того методу, в якому цей блок буде реалізований, але не можна оголошувати методи або типи.


Такий стиль програмування був характерний для asp. Найчастіше в блоках відображення виводиться HTML-код за допомогою Response.Write.


<% = SomeExpr%> є скороченням <% Response.Write (someExpr)%>.

 <html>
<head>
</head>
<body>
1 Рядок HTML <br />
<% Response.Write ("1 Рядок ASP.NET <br />");%>
2 Рядок HTML <br />
<% Response.Write ("2 Рядок ASP.NET <br />");%>
3 Рядок HTML <br />
<% = "3 Рядок ASP.NET <br />";%>
</body>
</html>

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


Об'єкт будь-якого класу створюється з допомогою синтаксису «тег об'єкта»

 <object id="items" class="System.Collections.ArrayList" runat="server"/>

Це еквівалентно опису в класі сторінки поля

    System.Collections.ArrayList items;

Ще один спосіб застосовується для зв'язування з джерелами даних і буде розглянуто в 7 лекції.


Висновок


Технологія ASP.NET побудована на об'єктно-орієнтованому подієво-керованому підході до створення web-сторінки. Класи, що використовуються для генерації web-сторінок, є частиною бібліотеки. NET Frameworks. Для багатьох з них існують аналоги в Windows Forms, що зближує програмування настільних додатків з програмуванням web-додатків.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*