Клас System.Web.UI.Page інкапсулює функціональність, необхідну для створення та обробки сторінок ASP.NET.
Кожна сторінка ASP.NET – це об’єкт класу, який автоматично генерується ядром ASP.NET. Клас наслідується від асоційованого зі сторінкою класу, якщо використовується відокремлений код, або прямо наслідується від System.Web.UI.Page, якщо код на C# вбудований у сторінку. Середовище також утворює конструктор за замовчуванням.
Наприклад, код для сторінки PageType.aspx
<div>
<% Response.Output.Write("Тип сторінки {0}",this.GetType()); %>
</div>
<div>
<% Response.Output.Write("Базовий тип {0}",this.GetType().BaseType); %>
</div>
видасть такий результат:
Тип сторінки 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>
У сторінки є дві важливі властивості - Response та Request.
Властивість Response має тип HttpResponse. Властивість Response сторінки можна сприймати як вихідний потік. Весь HTML код генерованої сторінки в принципі може бути виведений через запис в цей потік. Це був стандартний спосіб роботи програмістів asp. Але в ASP.NET є більш зручні засоби виводу даних з допомогою серверних елементів управління. Властивість Response краще використовувати для запису Cookies, для задання різноманітних параметрів заголовку і т.п.
Ось приклад утворення Cookies:
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"]);