4. Принципы создания web-приложений с помощью технологии

advertisement
Принципы построения web-приложений на основе технологии ASP.NET
Asp.net-страницы формируются на основе даже не html-тегов, а на основе достаточно
широкого спектра web-элементов управления, близких по стилю и управлению элементам
управления из пространства имен Windows.Forms.
Обработка элементов управления осуществляется как на стороне клиента средствами
JavaScript, так и на стороне сервера (элемент управления и форма должны иметь атрибут
runat=”server”). Наличие этого атрибута вызывает обращение к некоторому серверному
обработчику, приводящее, в частности, к перегрузке asp.net-страницы.
Особая роль при проектировании asp.net-страницы относится к web-элементам
управления. Эти элементы в разметке начинаются с префикса asp. Они также, как и
обычные элементы html-кода, могут иметь атрибуты и обработчики. Однако их
обработчики могут быть как клиентскими, так и серверными. Кроме того, они имеют
специальные атрибуты, например, источники данных для таблиц и пр. Web-элементы
управления заменяют себя на html-представление данных, который элемент представляет.
Существует две модели построения asp.net-страниц:
 Модель одномодульной страницы;
 Модель страницы с внешним кодом приложения.
Модель одномодульной страницы содержит вместе и код обработки, и разметку.
Например, пусть требуется вывести html-таблицу с данными некоторой таблицы базы
данных:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
// серверный сценарий обработки нажатия кнопки
protected void btn_Click(object src, EventArgs args)
{
OleDbConnection sqlConn =
new OleDbConnection("Provider=SQLOLEDB.1;... ");
sqlConn.Open();
OleDbCommand cmd = new OleDbCommand("select * from MyTable",
sqlConn);
MyView.DataSource = cmd.ExecuteReader();
MyView.DataBind();
sqlConn.Close();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Пробная asp.net страница</title>
</head>
<body>
<form id="form1" runat="server">
<div style="background-color: aqua">
Щелкните на кнопке, чтобы заполнить таблицу:<br />
<asp:Button ID="MyButton" runat="server" Text="Заполнить таблицу"
OnClick="btn_Click"/><br />
<asp:GridView ID="MyView" runat="server">
</asp:GridView>
<br />
</div>
</form>
</body>
</html>
Данный сценарий содержит кнопку и элемент «Просмотр таблицы», которые
обрабатываются серверными средствами. Объект класса, который наследует от Page,
будет содержать ссылки на объекты классов web-элементов управления, которые будут
иметь имена, совпадающие с ID web-элемента управления. В данном случае нажатие на
кнопку приводит к выполнению функции-обработчика btn_Click, который обращается к
базе данных и производит привязку данных к таблице GridView.
В случае модели с внешним кодом поддержки будут сгенерированы два файла – файл с
разметкой (расширение .aspx) и файл с программным кодом (с расширением .cs). Связь
файлов фиксируется в атрибуте CodeFile главного тега Page asp.net-страницы.
К элементам, которые поступают из формы можно обращаться как через объект Request,
так и напрямую, как к обычным элементам управления.
Asp.net-страница имеет удобное свойство IsPostBack, позволяющее отследить,
загружается ли страница впервые (true) или произошел повторный запрос к ней (false).
Существует возможность задания шаблона страницы, в который должно быть вставлено
конкретное содержимое. Шаблон создается в специальном файле с расширением .master.
Он также может иметь собственные обработчики, например, обработчик проведения
авторизации пользователя. Его файл разметки имеет примерно следующую структуру:
<%@ Master Language="C#" AutoEventWireup="true"
CodeFile="MyMastPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Страница на основе шаблона</title>
</head>
<body>
<!-- html и aspnet-раметка -->
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</body>
</html>
В элемент contentplaceholder осуществляется вставка конкретного содержимого в
страницах, сгенерированных на основе этого шаблона, которая имеет следующую
структуру:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Basket.aspx.cs"
MasterPageFile="~/MyMastPage.master" Inherits="Basket" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
<!-- html и asp.net-разметка конкретного содержимого страницы -->
</asp:Content>
Каждый серверный обработчик asp.net-страницы имеет доступ к передаваемым
параметрам через коллекцию Params объекта Request, может записывать ответ в поток,
предоставляемый объектом Response. Через объект Response можно также осуществить
перенаправление на другую asp.net-страницу с помощью метода Redirect.
Download