|
https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Анатомия ASP .NET. ASP .NET в действии
Свойства страницы
Страница — это основа всего в 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.AddParsedSubObject(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> стоит уже не "Hello ASP.NET", а "Новый заголовок", который был установлен через 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"]);