Пример страницы ASP.NET

В основу разработки Web-приложений на ASP.NET положена модель разделения кода представления и кода реализации, рекомендуемая Майкрософт при создании динамических документов. Страницы ASP.NET имеют расширение .aspx. Программный код может размещаться либо в отдельном файле, либо на странице внутри специального тэга для сценариев. Файл с кодом обычно имеет расширение .aspx.cs (.aspx.vb) и имя, совпадающее с именем основного ASPX файла.

Внедрение программного кода в страницу aspx похоже на то, что используется в обычных asp-страницах.

Страницы ASP.NET обычно содержат директивы, которые позволяют указать свойства и конфигурацию для страницы. Директивы используются ASP.NET в качестве инструкций, определяющих способ обработки страницы. Они не отображаются в разметке, которая отправляется клиенту.

Наиболее часто используется директива @ Page, с помощью которой можно задавать множество параметров:

серверный язык программирования для кода на странице;

место нахождения кода сервера (непосредственно в странице или в отдельном файле класса);

параметры отладки и трассировки.

имеет ли страница связанную главную страницу.

Если директива @ Page не включена в страницу, или если эта директива не включает определенные настройки, параметры наследуются из файла конфигурации для приложения (файл Web.config) или из файла конфигурации узла (файл Machine.config). Наиболее важные атрибуты директивы перечислены в таблице 4.1.

Таблица 4.1

Атрибуты директивы @ Page

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

Кроме директивы @ Page, в текст можно включить другие директивы, которые содержат дополнительные параметры, специфичные для страницы.

Для понимания сути основных технологических решений рассмотрим последовательно создание страницы ASP.NET, которая будет содержать текстовое поле для ввода имени и кнопку, событие нажатия на которую будет обрабатываться на сервере. Обработка будет состоять в выводе сообщения с использованием введенного имени.

Примечание! Для лучшего понимания сущности описываемых процессов действия по созданию файлов рекомендуется выполнять в простом редакторе (например, Блокнот).

Возьмем за основу такую статическую страницу:

<html>

<head>

<title>Простейшая ASP.NET страница</title>

</head>

<body>

<form id="form1">

<h1>Welcome to ASP.NET</h1>

<p>Введите свое имя</p>

<input type=text ID="TextBox1">

<input type=button ID="Button1" value="Click">

</form>

</body>

</html>

С целью придания странице динамических свойств заменим статические элементы на серверные. Этим сделаем их доступными для обработки на сервере:

<html>

<head>

<title> Простейшая ASP.NET страница </title>

</head>

<body>

<form id="form1" runat="server">

<h1>Welcome to ASP.NET</h1>

<p>Введите свое имя</p>

<p>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" Text="Click" />

</p>

<p>

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

</p>

</form>

</body>

</html>

Серверными элементами в этом коде являются: форма (атрибут runat="server"), текстовое поле (<asp:TextBox…>), кнопка (<asp:Button…>) и надпись (<asp:Label…>). Если этот код поместить в файл с расширением.aspx и открыть в браузере через сервер, то внешне все будет выглядеть так, как и в статической HTML-странице. Посмотрев код, который получил браузер с сервера, увидим, что все серверные элементы подверглись обработке: в форме появилось скрытое поле, серверные управляющие элементы заменены на input и span.

Для того, чтобы события этой страницы обрабатывались на сервере, включим в текст страницы тег <script runat="server"> с обработчиком на языке C#, и свяжем его с событием, поместив соответствующий атрибут (OnClick="Button1_Click") в серверный управляющий элемент кнопка:

<%@ Page Language="C#" %>

<html>

<script runat="server">

Void Button1_Click(object sender, System.EventArgs e)

{

Label1.Text = "Welcome, " + TextBox1.Text;

}

</script>

<head runat="server">

<title> Простейшая ASP.NET страница </title>

</head>

<body>

<form id="form1" runat="server">

<h1>Welcome to ASP.NET</h1>

<p>Введите свое имя</p>

<p>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" />

</p>

<p>

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

</p>

</form>

</body>

</html>

Обработчик события должен объединить текст из поля с именем TextBox1 со строкой приветствия.

Получилось законченное Web-приложение, созданное по технологии ASP.NET. Функционирует оно следующим образом. При первом поступлении запроса на страницу сервер обработает все элементы с атрибутом runat="server". Код из тега script компилируется и помещается в специальный буфер, серверные элементы управления заменяются на HTML-элементы, пользователь получает страницу с предложением ввести имя и нажать кнопку. После нажатия кнопки данные из формы отправляются на сервер. Сервер вновь обращается к странице, скрытые поля используются для идентификации элементов и состояния приложения. Сервер выполняет откомпилированный код, который изменяет свойства серверного элемента (Label1.Text). После этого вновь производится замена серверных элементов, но тег span, которым заменяется asp:Label, уже содержит текст приветствия и имя пользователя. Пользователь видит в окне новое содержание, при этом вся обработка была выполнена на сервере.

Технология позволяет хранить и использовать код обработки и разметки в отдельных файлах. При этом обработчик как метод класса страницы помещается в файл с расширением aspx.cs, а имя файла и класса помещается в директиву @ Page. Для нашего примера файл с кодом страницы (например3.aspx):

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

<html>

<head runat="server">

<title>Пример с кодом обработчика в отдельном файле</title>

</head>

<body>

<form id="form1" runat="server">

<h1>Welcome to ASP.NET</h1>

<p>Введите свое имя</p>

<p>

<asp:TextBox ID="TextBox1" runat="server"/>

<asp:Button ID="Button1" runat="server" Text="Click" onclick="Button1_Click"/>

</p>

<p>

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

</p>

</form>

</body>

</html>

Файл с кодом обработчика (3.aspx.cs):

using System;

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

{

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text ="Welcome, "+TextBox1.Text;

}

}

Следует отметить, что разницы между этими способами (обработчик в тексте страницы и в отдельном файле) с точки зрения функционирования приложения нет.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: