Основы ASP.NET 2.0

Свойства страницы


Страница — это основа всего в 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"]);

Содержание раздела