ASP.NET предлагает самый современный набор инструментов и технологических решений для разработки расширяемых веб-приложений. Редактором для программирования на базе ASP.NET является Visual Studio .NET. Приложения ASP.NET могут создаваться на различных языках программирования. Как правило, это языки Visual Basic и C#, и в данной лекции мы будем работать с языком C#.
Visual Basic представляет собой популярный язык программирования для разработки программ на платформе Microsoft. Компания Microsoft расширяла возможности и опции языка Visual Basic до выпуска шестой версии без ущерба обратной совместимости. Версия 7 пакета Visual Basic поставляется с Visual Studio .NET; поддержка наследственности версий языка в ней упразднена. Фрагмент кода VB6 невозможно скомпилировать в Visual Basic .NET (версия 7). Visual Basic .NET имеет мощные функциональные возможности, например, реальное наследование, что делает его настоящим языком объектно-ориентированного (ОО) программирования.
Следует отметить, что стили языков C++, Java и JavaScript оказывают сильное влияние на сообщество веб-программистов, поэтому в качестве языка программирования для интернета нужен язык с похожим стилем. Язык С#, новый язык от Microsoft в пакете Visual Studio .NET, обладает преимуществами языков типа C++ и Java, устраняя их недостатки. Итак, язык C# будет использоваться в данной лекции для демонстрации разработки веб-форм ASP.NET.
Программистам VB потребуется изучить синтаксис нового языка и некоторые
элементы его архитектуры для перехода к работе со средой разработки
Visual Studio .NET Integrated
Расширением файла страницы веб-формы ASP.NET является .aspx, и в этой
лекции такой тип файлов называется ASPX. Каждая веб-форма ASP.NET имеет
связанный с ней класс. Классы файла ASPX содержатся в файле кода формы,
который называется Codebehind. Имя файла Codebehind указывается
следующим образом: <имя_файла>.aspx.<расширение_языка>, где <имя_файла> – имя файла ASPX, <расширение_языка> –
двухсимвольное расширение, отражающее язык файла Codebehind. Если файл
ASPX называется Webform.aspx, то файл Codebehind имеет вид Webform.aspx.cs для языка C# и Webform.aspx для языка Visual Basic.
Файл ASPX содержит визуальные элементы веб-формы, а файл Codebehind
содержит логику, согласно которой эта форма функционирует. Все файлы Codebehind компилируются в динамически подключаемые библиотеки (DLL),
отгружаемые на сервер вместе с соответствующими страницами ASPX.
Библиотеке DLL проекта по умолчанию присваивается имя проекта.
При запросе ASPX в IIS страница обрабатывается посредством расширения
ISAPI ASP.NET aspnet_isapi.dll. Технология .NET генерирует еще одну
временную библиотеку DLL на основе ASPX во время первого запроса файла.
Эта DLL содержит класс, наследуемый от соответствующего класса
веб-формы, сгенерированного в файле Codebehind, и располагается в
библиотеке DLL проекта (см. рис. 2.1).
Такая система существенно обобщает бизнес-логику и логику представления
по сравнению с абстракцией, предлагаемой архитектурой ASP. Файл Codebehind содержит бизнес-логику, а ASPX – логику представления
веб-формы.
(рис 2.1) Обзор архитектуры веб-форм ASP.NETВозможности этих двух файлов усиливают уровень абстракции логики
представления и бизнес-логики. Файлы ASPX – это файлы XML, содержащие
элементы HTML и элементы управления серверной части для создания HTML.
Программист может внедрять бизнес-логику в файлы ASPX, но на это ему
придется затратить дополнительные усилия. Файлы Codebehind – это файлы
с кодом, и разместить в них логику представления гораздо сложнее, чем
использовать файлы ASPX. В ASP абстракция бизнес-логики и логики также
представляет собой сложный процесс, поэтому в ASP логика представления
и бизнес-логика объединяются при разработке программного решения.
Откройте Visual Studio .NET. Вы увидите начальную страницу, если ее отображение разрешено. Как и в предыдущей версии Visual Studio, по умолчанию предоставляется шаблон проекта (эту возможность можно отключить). Создадим новый проект веб-форм ASP.NET.
localhost, если
разрабатываемое программное решение располагается на рабочей станции во
время написания кода и модульного тестирования. В нашем примере указано
имя SimpleWF.
(рис 2.2) Присвоение имени проекту веб-приложения ASP.NET SimpleWFПри успешном подключении Visual Studio .NET к серверу, указанному в окне New Project (Создание проекта), по умолчанию генерируются следующие файлы:
AssemblyInfo.cs ;Global.asax ;Global.asax .resx ;SimpleWF.csproj ;SimpleWF.csproj.webinfo ;SimpleWF.vsdisco ;Web.Config ;WebForm1.aspx ;WebForm1.aspx.cs ;WebForm1.aspx.resx.После создания веб-формы на узле редактор отобразит пустую веб-форму с
именем WebForm1, готовую для редактирования (см. рис. 2.3).
Для редактирования веб-форм в Visual Studio .NET используется дизайнер
веб-форм (Web
(рис 2.3) Веб-форма в представлении Design (Дизайн) дизайнера веб-формОбратное переключение легко осуществляется посредством кнопки Design (Дизайн), расположенной рядом с кнопкой HTML. Дизайнер веб-форм является довольно гибким компонентом и отображает изменения, вносимые вручную в представлении HTML. Файл ASPX редактируется в любом представлении дизайнера веб-форм – все вносимые изменения равнозначны.
Файл ASPX является отображаемым файлом веб-приложения ASP.NET. Конечный
пользователь запрашивает его в своем веб-браузере для реализации функциональных
возможностей веб-приложения ASP.NET. Если конечному пользователю нужно
просмотреть веб-форму этого файла из IIS, необходимо выполнить запрос из
веб-браузера по адресу http://<URL_моего_узла>/<мой_виртуальный_веб-каталог>/WebForm1.aspx,
введя его в адресной строке.
Создаваемому виртуальному каталогу по умолчанию присваивается имя
проекта. Все веб-приложения ASP.NET генерируют виртуальный веб-каталог
при установке в IIS. Файлы WebForm1.aspx.cs и WebForm1.aspx.resx
используются для создания проектной библиотеки DLL – результата
компиляции файла WebForm1.aspx. Файл aspx.cs называется кодом
реализации файла ASPX, а файл ASPX – главным файлом. Файл aspx.cs
содержит весь код, реализующий ASPX, а aspx.resx представляет собой
файл-источник веб-формы.
В листинге 2.1 показано представление HTML файла ASPX веб-формы ASP.NET. В нем можно изменять код HTML и сценарий javascript клиентской части, однако с помощью элементов управления веб-формы ASP.NET в представлении Design (Дизайн) вы создадите сложную веб-страницу без написания кода HTML. Представление Design (Дизайн) дизайнера веб-форм является редактором типа WYSIWIG ("что вижу на экране, то и получаю при печати"), абстрагирующим разработчика от кода HTML и дающим возможность наглядного построения веб-сраниц (по аналогии со средой IDE для приложений рабочего стола в Visual Basic 6). Если вам больше нравится программировать вручную, используйте область HTML-инструментария для получения элементов HTML.
<%@ Page language="c#" Codebehind="requestSomething.aspx.cs" AutoEventWireup="false" Inherits="SimpleWF.requestSomething" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>requestSomething</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="requestSomething" method="post" runat="server">
<asp:TextBox id="txtYourself" style=
"Z-INDEX: 101; LEFT: 193px; POSITION: absolute;
TOP: 46px" runat="server" Width="330px"
Height="25px">
</asp:TextBox>
<asp:Label id="Label1" style=
"Z-INDEX: 102; LEFT: 26px; POSITION: absolute;
TOP: 41px" runat="server" Width="155px"
Height="43px">
Tell me about yourself and click submit:
</asp:Label>
<asp:TextBox id="txtResponse" style=
"Z-INDEX: 103; LEFT: 57px; POSITION: absolute;
TOP: 148px" runat="server" Width="435px"
Height="101px" ReadOnly="True"
TextMode="MultiLine">
</asp:TextBox>
<asp:Button id="Button1" style=
"Z-INDEX: 104; LEFT: 298px; POSITION: absolute;
TOP: 79px" runat="server" Width="131px"
Height="43px" Text="Submit">
</asp:Button>
<asp:Label id="Label2" style=
"Z-INDEX: 105; LEFT: 66px; POSITION: absolute;
TOP: 116px" runat="server" Width="138px"
Height="27px">You Said:
</asp:Label>
</form>
</body>
</HTML>
Первая строка requestSomething.aspx определяет файл Codebehind с именем requestSomething.aspx.cs. использует такие же правила
именования файлов, что и файл requestSomething.aspx, обращаясь к файлу . Назначение файла такое же, как в ASP –
обеспечить место расположения для записи кода, доступное веб-формам
рассматриваемого проекта, которое позволит разработчику фиксировать
события, связанные с приложением. Например, в ASP файл Global.
обеспечивает запуск и остановку приложения, открытие и закрытие сеанса;
файл предоставляет класс Global, наследующий System.Web.HttpApplication и содержащий функции, связанные с этими
событиями. Кроме того, предоставляет события начала и
завершения запроса на ресурсы, процесса аутентификации и ошибок
приложения.
Веб-форма requestSomething.aspx содержит три элемента управления. Они
добавлены из области Web Forms (Веб-формы). В дизайнере веб-форм можно
добавлять элементы управления в веб-форму, как при создании приложения
рабочего стола в Visual Basic или в Visual C++. Интерфейс элементов
управления практически такой же.
Разработчики создают код веб-форм так же, как они программируют классы
форм в Visual Basic или Visual C++. Представление свойств элемента
управления имеет формат XML и располагается в файле ASPX. Технология
.NET использует XML для инициализации нужного элемента управления и
создания кода HTML, возвращаемого потребителю. Инструментарий Visual
Studio .NET позволяет разработчикам выбирать элементы HTML. Например,
элементы DataGrid и таблица HTML реализуют отображение таблицы в
веб-браузере. Элемент управления веб-формы DataGrid дает более обширное
программное управление заполнением и конфигурацией таблицы по сравнению
с элементом таблицы HTML. В листингах 2.2 и 2.3 показаны различия
между элементом управления веб-формы DataGrid и элементами HTML. В
листинге 2.2 приведен код XML, размещенный в файле ASPX и
представляющий собой элемент управления DataGrid.
<asp:DataGrid id="DataGrid2" style="Z-INDEX: 104; LEFT: 88px; POSITION: absolute; TOP: 258px" runat="server"> </asp:DataGrid>
В листинге 2.3 показан элемент HTML, созданный при вставке таблицы из области HTML-инструментария в веб-форму.
<TABLE id="Table1" style="Z-INDEX: 103; LEFT: 191px; POSITION: absolute; TOP: 291px" cellSpacing="1" cellPadding="1" width="300" border="1"> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> </TABLE>
В простейшей веб-форме requestSomething.aspx (см. рис. 2.4)
пользователь может ввести некоторую личную информацию и нажать на
кнопку Submit (Отправить). После отправки веб-формы он получает ответ в
виде содержимого, введенного им в текстовом поле с именем Tell Me About
Yourself And Click Submit (Расскажите о себе и нажмите на кнопку Submit
[Отправить]), а также в поле You Said (Вы сказали). На рисунке 2.4
показана форма requestSomething.aspx после отправки информации на
сервер.
(рис 2.4) Веб-форма requestSomething.aspx в действии
В классическом ASP разработчик размещает в файле ASP код для извлечения
данных, отправленных пользователем. После извлечения данных из объекта Request они располагаются в атрибуте значения другого текстового поля,
отображающего отправленную пользователем информацию. В файле ASP нужный
результат достигается в строке кода:
<textarea name="txtResponse" ><% =Request("txtYourself") %>
</textarea>
В веб-форме ASP.NET требуется разработка большего объема кода, но с
более высоким уровнем организации. В листинге 2.4 приведен код
веб-формы requestSomething.aspx в файле requestSomething.aspx.cs.
Дизайнер веб-форм автоматически генерирует большую часть кода,
приведенного в листинге 2.4. При открытии файла requestSomehing.aspx в
представлении Design (Дизайн) и двойном щелчке на элементе управления
верхнего текстового поля txtYourself дизайнер веб-форм создаст событие
в файле requestSomething.aspx.cs с именем txtYourself_TextChanged.
Дизайнер веб-форм откроет файл requestSomething.aspx.cs для получения
функции события, созданной для элемента управления txtYourself.
Несмотря на то, что дизайнер веб-форм генерирует большую часть кода в
файле Codebehind, этот код при желании можно редактировать вручную.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for requestSomething.
/// </summary>
public class requestSomething : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox txtYourself;
protected System.Web.UI.WebControls.TextBox txtResponse;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtYourself.TextChanged += new
System.EventHandler(this.txtYourself_TextChanged);
this.Load += new
System.EventHandler(this.Page_Load);
}
#endregion
private void txtYourself_TextChanged
(object sender, System.EventArgs e)
{
this.txtResponse.Text = this.txtYourself.Text;
}
}
}
Обработчик события веб-формы вызывается при изменении и отправке на
веб-сервер значения txtYourself в форме. После отправки формы серверу
файл Codebehind веб-формы requestSomething.aspx определяет, что
отправлено значение текстового поля txtYourself и вызывает функцию
события txtYourself_TextChanged. В нашем примере для размещения
значения, отправленного в текстовое поле txtResponse, создана
единственная строка кода:
this.txtResponse.Text = this.txtYourself.Text;
Оба текстовых поля воспринимаются как элементы управления или экземпляры классов в обычном программном приложении, полностью абстрагируя программиста от деталей HTML. Так как программист может вставлять элементы управления в представлении Design (Дизайн) и изменять код, связанный с действием элемента управления, щелкнув на этом элементе, он практически полностью избавляется от редактирования кода HTML.
Проект ASP.NET с именем SimpleWF создает библиотеку – установочный
пакет для файлов веб-формы, из которых состоит проект; эта библиотека
является обычной DLL. Библиотека создается при первом запросе файла
ASPX из IIS. Файл Codebehind и файл источника, ссылки на которые
содержатся в файле ASPX, компилируются в языке инструкций Microsoft
(MISL). Формат этого языка аналогичен коду библиотеки в отличие от
двоичных продуктов других компиляторов. MISL создается только для
исполняемых подпрограмм кода.
Файлы AssemblyInfo.cs, SimpleWF.csproj, SimpleWF.csproj.webinfo и SimpleWF.vsdisco поставляют компилятору необходимую информацию для
создания библиотеки, содержащей код MISL, сгенерированный из файлов
ASP.NET. Информация в файле AssemblyInfo.cs представляет собой описание
библиотеки, например, ее версию и имя. Этот файл можно использовать для
подписи библиотек посредством присвоения ключа, который является
механизмом защиты библиотеки от реинжиниринга. В листинге 2.5 приведен
код пустого файла AssemblyInfo.cs. Файл библиотеки можно редактировать
напрямую, и для этого не требуется высокого уровня знаний. Укажите
известные значения, оставив другие значения незаполненными.
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
Файл csproj является файлом XML и содержит информацию о зависимостях
проекта и некоторых параметрах компиляции библиотеки. Visual Studio
.NET обновляет этот файл по мере добавления или удаления из проекта
веб-форм и ссылок. Не следует изменять файл csproj при обычной работе с
проектом ASP.NET. При открытии файла в браузере отображается информация
обо всех параметрах и элементах, составляющих проект: имена файлов,
параметры реализации и ссылки библиотеки и т.д.
Файл csproj.webinfo представляет собой файл XML и описывает
расположение файла проекта. В листинге 2.6 приведено содержание файла SimpleWF.csproj.webinfo. Он также генерируется и обновляется Visual
Studio. .NET, и его не следует редактировать напрямую.
<VisualStudioUNCWeb> <Web URLPath = "http://amd1700/SimpleWF/SimpleWF.csproj" /> </VisualStudioUNCWeb>
Файл vsdisco определяет пути поиска на сервере разработки, что дает
ASP.NET возможность нахождения веб-служб ASP.NET. Файл SimpleWF.vsdisco
генерируется для проекта SimpleWF по умолчанию. В листинге 2.7
приведен исходный код файла SimpleWF.vsdisco. Для упрощения поиска
ASP.NET других библиотек в среде разработки следует отредактировать
файл vsdisco, указав в нем веб-каталоги, в которых не нужно
осуществлять поиск. В версии vsdisco по умолчанию исключаются папки
расширения FrontPage, так как обычно библиотеки в этих папках не
содержатся.
<?xml version="1.0" encoding="utf-8" ?>
<dynamicDiscovery xmlns=
"urn:schemas-dynamicdiscovery:disco.2000-03-17">
<exclude path="_vti_cnf" />
<exclude path="_vti_pvt" />
<exclude path="_vti_log" />
<exclude path="_vti_script" />
<exclude path="_vti_txt" />
<exclude path="Web References" />
</dynamicDiscovery>
Файл web.config представляет собой файл конфигурации IIS. Программист
использует его для настройки IIS на определенную работу в процессе
разработки. Когда проект ASP.NET готов к реализации, сайт или
виртуальный каталог IIS немедленно настраивается согласно этой
конфигурации. Параметры файла web.config применяются ко всем папкам
каталога, в котором расположен данный файл, если ни в одной из них не
содержится другого файла web.config (в веб-приложении их может
содержаться несколько). Если файл web.config отсутствует, то по
умолчанию используется файл machine.config, расположенный в папке $:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG. Фрагмент пути
v1.1.4322 отражает версию технологии .NET, используемой на сервере. В
листинге 2.8 приведен файл по умолчанию web.config, созданный в
проекте SimpleWF.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation
defaultLanguage="c#"
debug="true"
/>
<customErrors
mode="RemoteOnly"
/>
<authentication mode="Windows" />
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString=
"data source=127.0.0.1;user id=sa;password="
cookieless="false"
timeout="20"
/>
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>
Параметры приложения устанавливаются как дочерние элементы элемента appSettings, который, в свою очередь, является дочерним по отношению к
элементу configuration. Файл web.config по умолчанию не содержит
параметров приложения. Эти параметры обычно включаются динамическими
свойствами элементов управления, добавленных в веб-формы в дизайнере
веб-форм или введенных вручную. Параметры приложения содержат значения
инициализации компонентов приложения. Об использовании файла web.config
для хранения и извлечения параметров приложения более подробно
рассказывается в лекции 3.
Элемент system.web имеет дочерние элементы, содержащие параметры
управления механизмом самого веб-приложения. При отсутствии дочерних
элементов приложение использует параметры файла machine.config.
Приведенный ниже список возможных параметров далеко не полон, однако
формирующие этот список дочерние элементы элемента system.web по
умолчанию присутствуют в файле web.config, созданном Visual Studio
.NET:
Отображение информации из базы данных в таблице HTML реализуется с
помощью элемента управления веб-формы DataGrid. В представлении Design
(Дизайн) выберите DataGrid в инструментарии и вставьте этот элемент в
веб-форму. При отображении кода HTML вы имеете дело с представлением
формы в HTML. На рисунке 2.3 изображена веб-форма в представлении
Design (Дизайн).) После добавления в форму элемента DataGrid его можно
переименовать в окне свойств. На рисунке 2.5 мы видим, что элементу DataGrid присвоено имя dgChair.
(рис 2.5) Окно свойств элемента управления DataGridЗапуск веб-формы в Visual Studio .NET на данном этапе вызовет
компиляцию веб-формы в библиотеку на сервере разработки. В нашем
примере сервер разработки, на котором расположена веб-форма, называется
amd1700. Для компиляции веб-формы и запуска ее в режиме отладки в
Visual Studio .NET нажмите на клавишу F5. Visual Studio .NET
скомпилирует веб-форму и перейдет в
После завершения компиляции на рабочей станции откроется браузер с
отображением веб-формы. Сервер разработки выполнит действия,
необходимые для отображения веб-страницы, и браузер откроет пустую
страницу. При закрытии браузера сеанс отладки завершится, и Visual
Studio .NET вернется в режим редактирования. В данном упражнении
отображается пустая страница, поскольку элемент DataGrid dgChair не
содержит никаких данных. Для отображения элементом DataGrid данных
нужно создать в файле Codebehind код, реализующий получение элемента DataSet и размещение данных в элементе управления dgChair.
Чтобы изменить файл Codebehind веб-формы с элементом dgChair, щелкните
правой кнопкой мыши на файле веб-формы в Solution Explorer или правой
кнопкой мыши на самом файле в представлении Design (Дизайн). Затем
выберите View Code (Просмотреть код). По умолчанию Visual Studio .NET
отображает в Solution Explorer не все файлы программного решения.
Щелкните на значке Show All Files (Показать все файлы) в верхней части
Solution Explorer для показа всех файлов, чтобы выбрать файл Codebehind.
Файл Codebehind отобразится с директивами using для классов,
необходимых для функционирования веб-формы, с пространством имен и
структурой классов. Пространство имен носит то же имя, что и
рассматриваемый проект. Имя класса совпадает с именем веб-формы. В
листинге 2.9 приведен исходный код веб-формы showGrid. Веб-форма showGrid демонстрирует элемент управления DataGrid. Дизайнер веб-форм
разместил защищенный элемент в классе showGrid, представляющий элемент dgChair, добавленный в веб-форму. Ссылка using System.Data.OleDb
добавлена для простоты обращения к классам ADO.NET.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //for the OleDbclasses
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for showGrid.
/// </summary>
public class showGrid : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgChair;
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler
(this.Page_Load);
}
#endregion
}
}
Если вам нужно заполнить элемент dgChair данными из таблицы базы
данных, то требуется получение набора данных ADO.NET DataSet с
информацией из базы данных. Набор DataSet используется для заполнения
элемента dgChair при запросе веб-страницы с веб-сервера. При загрузке
страницы с веб-сервера вызывается событие Load объекта Page. Класс showGrid наследуется из System.Web.UI.Page, как видно из объявления
класса в листинге 2.9, поэтому событие Load также наследуется из System.Web.UI.Page. При выполнении события Load происходит получение
набора DataSet и заполнения элемента DataGrid. В листинге 2.10
приведена подпрограмма LoadGrid, реализующая заполнение элемента DataGrid набором DataSet.
private void LoadGrid(DataGrid dg)
{
//set the connection credentials
string DataSetName = "myChairs";
string ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\aspData\\employees.mdb;";
//make the DB connection
OleDbConnection myConn = new
OleDbConnection(ConnectionString);
//make a data set to hold chairs
DataSet myDataSet = new DataSet(DataSetName);
//make a data adaptor
OleDbDataAdapter myAdapt = new
OleDbDataAdapter("Select * From tblChair", myConn);
//fill the dataset
myAdapt.Fill(myDataSet);
//get a view in the dataset
DataView myDataView = new DataView(myDataSet.Tables[0]);
//show the data view in the Grid
dg.DataSource = myDataView;
dg.DataBind();
}
LoadGrid представляет собой функцию, входящую в класс showGrid. Функция
вызывается посредством размещения следующего вызова в функции события Page_Load файла showGrid.aspx:
LoadGrid(dgChair);
При загрузке страницы showGrid.aspx фиксируется событие Load и
вызывается функция LoadGrid. При вызове функции LoadGrid
устанавливается подключение к базе данных посредством строковой
переменной и инициализируется объект подключения ADO Connection.
Примечание. Следует отметить, что указывать символьные аргументы строки
подключения в коде, как в листинге 2.10, крайне не рекомендуется. Это
сделано, чтобы показать аутентификационные данные, используемые для
подключения, а также метод их применения к объекту Connection.
Рекомендуем получать аутентификационные данные, размещая строки
подключения к базе данных в файле web.config (см. лекции 3).
В листинге 2.10 используется источник данных Microsoft Access 2000.
Чтобы веб-форма ASP.NET могла считывать и записывать информацию в файл
базы данных Access, необходимо настроить файловые разрешения сервера
для файлов данных Access ( .mdb ). При использовании базы данных
корпоративного уровня, например, SQL Server или Oracle, для передачи
аутентификационных данных серверу базы данных при ее запросе веб-формой
ASP.NET возможно применение интегрированной безопасности. Аргумент integrated security=sspi в строке подключения к базе данных указывает
использование интегрированной безопасности, и аутентификационные данные
Windows .NET Server предоставляются источнику данных. Учетная запись
пользователя Windows, используемая приложением ASP.NET, меняться в
зависимости от следующих критериев.
В зависимости от метода аутентификации в приложении IIS ASP.NET использует следующие учетные записи Windows.
IUSER_<имя_компьютера>Если IIS настроен на разрешение анонимного доступа к сайту, и для сервера установлен режим изоляции приложения по умолчанию (т.е. режим изоляции рабочих процессов), то ASP.NET использует субъект в пуле приложения, занятом веб-приложением. Если режим изоляции IIS 5.0 используется для обеспечения обратной совместимости, то субъектом пула приложения будет гостевая учетная запись IIS. Если приложение настроено на использование одного из режимов аутентификации, доступных в IIS и предусматривающих предоставление аутентификационных данных пользователем, то IIS по умолчанию использует в качестве субъекта аутентификационные данные. Субъекты, используемые по умолчанию приложением IIS, приведены в табл. 2.1.
В рассматриваемом приложении (или в любом другом) возможны и другие
Для веб-формы showGrid.aspx применяется режим изоляции рабочих
процессов. Анонимный доступ будет разрешен, поэтому аутентификационными
данными учетной записи Windows пула приложений станут входные данные,
используемые для доступа к источнику информации. Для файла базы данных
Microsoft Access файловые разрешения несущего сервера устанавливаются
так, чтобы учетная запись Windows производила чтение, запись и
изменение файла .mdb. Если речь идет о базе данный корпоративного
уровня, то учетной записи Windows нужно предоставить соответствующий
доступ к базе данных на сервере базы данных.
Примечание. Следует помнить, что файл web.config содержит элемент authentication. Режимом элемента аутентификации по умолчанию является
Windows. Так как многие программисты используют учетную запись группы
администраторов, то впечатление о правильности параметров в форме
ASP.NET может быть обманчивым, так как эта учетная запись наделена
правами на выполнение практически любых действий в среде разработки.
При перемещении приложения на тестовый или конечный сервер с
ограниченными разрешениями доступа возможно, что веб-форма не будет
функционировать.
| Аутентификация | Режим изоляции приложения | Учетная запись Windows, используемая ASP.NET |
|---|---|---|
| Анонимная | Изоляция IIS 5.0 | IUSER_<имя_компьютера>. |
| Анонимная | Изоляция рабочих процессов | Субъект пула приложения для веб-приложения. |
| Не анонимная | Изоляция IIS 5.0 | Аутентификационные данные, предоставленные пользователем при проверке подлинности. |
| Не анонимная | Изоляция рабочих процессов | Аутентификационные данные, предоставленные пользователем при проверке подлинности. |
Для заполнения элемента dgChair данными из таблицы базы данных мы будем
использовать ADO.NET, поэтому нужно добавить в файл showGrid.aspx
пространство имен для классов данных, необходимых для доступа к
источнику данных. Веб-формы по умолчанию содержат пространство имен System.Data, являющееся главным пространством имен ADO.NET. Другие
пространства имен, подчиненные System.Data, поддерживают определенные
типы источников данных. Стандартными пространствами имен, подчиненными System.Data, являются следующие.
System.Data.Common. System.Data.OleDb. System.Data.SqlClient. System.Data.SqlTypes.
Пространство имен SqlClient обеспечивает интерфейс к провайдеру SQL
Server и наиболее эффективный способ связи с SQL Server 2000.
Пространство имен System.Data.OleDb поддерживает интерфейс, аналогичный
традиционной технологии ADO; оно неэффективно при подключении к SQL
Server 2000. System.Data.Ole.Db рекомендуется для работы с источниками
данных, отличными от SQL Server 2000, имеющими провайдера OLE-DB.
Пространства имен System.Data.Common и System.Data.SqlTypes
обеспечивают интерфейсы для SQL Server и общие интерфейсы между SQL
Server и классами OLE-DB.
ADO.NET поставляется в виде единственной библиотеки – System.Data.dll.
Если необходима поддержка источника данных ODBC, Microsoft предлагает
другую библиотеку (ее можно загрузить из интернета) для обеспечения
пространства имен классов ODBC.
Поскольку источником данных, рассматриваемым в примерах данной лекции,
является Microsoft Acess 2000, то следует использовать пространство
имен OleDb. Если источником данных является SQL Server 2000, то
используется пространство имен SqlClient – это наиболее эффективный
способ установки связи с SQL Server 2000. Вверху файла showGid.aspx
необходимо вместе с остальными директивами пространства имен ввести
следующую строку кода:
using System.Data.OleDb; //for the OleDb classes
После установки соединения выполняется запрос экземпляра набора данных
ADO.NET myDataSet таблицы tblChairs базы данных. Набору данных DataSet
при инициализации присваивается имя myChairs. Инициализируется объект
ADO.NET Adaptor для заполнения экземпляра myDataSet. После этого
инициализируется объект ADO.NET DataView с именем myDataView с
использованием первой таблицы набора данных myDataSet. В итоге аргумент DataGrid с именем dg, переданный подпрограмме, устанавливает свойство
источника данных на экземпляр DataView с именем myDataView, и вызывает
метод DataBind аргумента dg для заполнения экземпляра dg элемента DataGrid данными из таблицы tblChairs.
Использование класса DataView не является обязательным, если нужно
отобразить весь набор данных DataSet. В элементе dg (см. листинге
2.10) отображается весь созданный набор данных DataSet, поэтому можно
опустить следующую строку:
DataView myDataView = new DataView(myDataSet.Tables[0]);
Свойство DataSource элемента dg установим равным значению Tables[0]
свойства набора данных myDataSet. Строку, присваивающую dg.DataSource
источнику myDataView, изменим следующим образом:
dg.DataSource = myDataSet.Tables[0]
При нажатии на клавишу F5 будет скомпилирована страница showGrid.aspx,
затем откроется окно браузера с отображением данных в таблице myChairs
(см. рис. 2.6).
(рис 2.6) Отображение результатов работы showGrid.aspx с использованием DataGrid
Помимо DataGrid для отображения информации из базы данных используются
и другие типы элементов управления данными. Элемент управления
применяется для отображения данных в формате, отличном от табличной
формы. В листинге 2.11 приведен исходный код файла ,
представляющий собой веб-форму, в которой элемент управления
заполняется данными с помощью набора ADO.NET Dataset.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //for the OleDb classes
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for datalist.
/// </summary>
public class datalist : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList dlChair;
private void LoadList(DataList dl)
{
//set the connection credentials
string DataSetName = "myChairs";
string ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\aspData\\employees.mdb;";
//make the DB connection
OleDbConnection myConn = new
OleDbConnection(ConnectionString);
//make a data set to hold chairs
DataSet myDataSet = new DataSet(DataSetName);
//make a data adaptor
OleDbDataAdapter myAdapt = new
OleDbDataAdapter("Select * From tblChair", myConn);
//fill the dataset
myAdapt.Fill(myDataSet);
//show the data in the data list
dl.DataSource = myDataSet;
dl.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
LoadList(this.dlChair);
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
использует иной механизм построения DataSet, называемый
шаблоном. Шаблон описывает способ отображения данных в элементе
управления DalaList. Щелкните правой кнопкой мыши на и
выберите любую из опций редактирования шаблона в команде Edit Template
(Изменить шаблон) контекстного меню. В шаблоне настраиваются заголовки
или имена полей, определяющие отображение данных. В
присутствуют также верхние, нижние колонтитулы и названия. Для указания
данных из определенного набора DataSet необходимо изменить шаблон в
представлении HTML. Теги <%# и %> означают присоединение данных в
странице веб-формы. В коде шаблона указываются поля присоединения
данных. В листинге 2.12 приведен код файла , отображаемый
в представлении HTML.
<%@ Page language="c#" Codebehind="datalist.aspx.cs"
AutoEventWireup="false" Inherits="SimpleWF.datalist" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>datalist</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" bgColor="#ffffff">
<form id="datalist" method="post" runat="server">
<asp:DataList id="dlChair" style=
"Z-INDEX: 102; LEFT: 18px; POSITION: absolute;
TOP: 34px" runat="server" Height="301px"
Width="316px">
<ItemTemplate>
<DIV style="PADDING-RIGHT: 15px;
PADDING-LEFT: 15px; PADDING-BOTTOM:
15px; FONT: 12pt verdana;
COLOR: black; PADDING-TOP: 15px"
align="left">ID:</DIV>
<%# DataBinder.Eval(Container.DataItem, "ID")%>
<DIV style="PADDING-RIGHT: 15px; PADDING-LEFT:
15px; PADDING-BOTTOM: 15px;
FONT: 12pt verdana;
COLOR: black; PADDING-TOP: 15px"
align="left">Color:</DIV>
<%# DataBinder.Eval(Container.DataItem, "Color")%>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</HTML>
определяется элементами HTML <asp:. Внутри
тегов элемента располагаются теги шаблона, определяемые тегом <ItemTemplate>. Свойства шаблона в дизайнере веб-форм генерируют
теги внутри тегов <ItemTemplate>, однако их можно отредактировать
вручную в представлении HTML. Теги присоединения данных можно
стратегически расположить внутри шаблона в тех местах, где должны
отображаться соответствующие поля набора данных DataSet. В листинге
2.12 приведены два поля из отображаемого набора DataSet – ID и Color.
Тег присоединения для поля ID имеет вид <%#DataBinder.Eval(Container.DataItem, "ID")%>, а тег
присоединения поля Color – <%#DataBinder.Eval(Container.DataItem,
"Color")%>.
При запуске сгенерирован тот же набор DataSet, как в
примере с элементом DataGrid (см. рис. 2.6). Однако формат данных
отличается от предыдущего примера (см. рис. 2.7), поскольку данные
отформатированы по шаблону, приведенному в листинге 2.12.
(рис 2.7) Результат работы файла datalist .aspx, полученный при помощи
шаблона для форматирования набора DataSet
Дизайнер веб-форм содержит мастер для создания форм, отображающий наборы данных из источника. Для работы с мастером форм данных (Data From Wizard) выполните следующие действия.
employees.aspx.DataSet. В данном примере создан набор DataSet с именем dsEmps (см. рис. 2.9). Все наборы DataSet, создаваемые в мастере,
становятся элементами проекта и могут использоваться другими
веб-формами или веб-службами внутри этого проекта. Файл DataSet имеет
расширение (рис 2.9) Окно Choose The Dataset You Want To Use (Выберите нужный набор данных) мастера форм данных (Data Form Wizard)tblEmployee (см.
рис 2.11(рис 2.11) Окно Choose Tables Or Views (Выберите таблицы или образы) мастера форм данныхОтметьте нужные столбцы для отображения в веб-форме.
При выборе несколько таблиц появится окно Create A Relationship Between
Tables (Создать отношение между таблицами), в котором выбираются ключи
и отношения таблиц. В нашем примере для отображения выбраны все столбцы
таблицы tblEmployee (см. рис. 2.12).
На рисунке 2.13 показана веб-форма employees.aspx, отображенная в
представлении Design (Дизайн). Элементы управления можно перемещать для
нужной настройки их отображения. Код, лежащий в основе формы, довольно
высокого уровня, в нем присутствует даже обработка ошибок!
(рис 2.13) Результирующая веб-форма, сгенерированная мастером форм данных, отображенная в представлении Design (Дизайн)Если employees.aspx установлена в качестве стартовой страницы, то
нажмите на клавишу F5 для компиляции employees.aspx, чтобы открыть
браузер и отобразить веб-форму. На пустой странице будет показана
кнопка Load (Загрузить). Нажмите на кнопку Load (Загрузить), и данные
отобразятся в браузере (см. рис. 2.14).
(рис 2.14) Веб-форма employees.aspx, сгенерированная мастером форм данных и отображающая информацию из таблицы tblEmployee
В веб-формах можно использовать элемент управления XML, реализующий XML, XSL и XSL Transformations (XSLT). Для получения веб-формы, осуществляющей преобразование XML и XSL, создайте новую веб-форму и в представлении Design (Дизайн) вставьте в форму элемент управления XML (см. рис. 2.15). Элемент управления XML предназначен, главным образом, для интеграции веб-форм в приложении, использующем XSL для инкапсуляции логики представления.
Элемент управления XML настраивается в окне свойств (см. рис. 2.15). В этом окне указывается файл XML или XSLT/XSL, и при открытии страницы осуществляется преобразование XML и XSL в HTML. Если в элементе управления указаны файлы, они должны являться частью проекта, отображаемого в Solution Explorer.
(рис 2.15) Отображение в представлении Design (Дизайн) формы с элементом управления XMLРазмещение в форме элемента управления XML ограничено: дизайнер веб-форм позволяет располагать его только в левом верхнем углу представления Design (Дизайн) (см. рис. 2.15), хотя некоторые элементы управления размещаются и под элементами управления XML. Дизайнер веб-форм может не воспринять действительную структуру страницы в документе XSL или XSLT, поэтому его возможности по отображению страницы в представлении Design (Дизайн) сильно ограничены.
ASP.NET предлагает самый современный набор инструментов и технологических решений для разработки расширяемых веб-приложений. Редактором для программирования на базе ASP.NET является Visual Studio .NET. Приложения ASP.NET могут создаваться на различных языках программирования. Как правило, это языки Visual Basic и C#, и в данной лекции мы будем работать с языком C#.
Visual Basic представляет собой популярный язык программирования для разработки программ на платформе Microsoft. Компания Microsoft расширяла возможности и опции языка Visual Basic до выпуска шестой версии без ущерба обратной совместимости. Версия 7 пакета Visual Basic поставляется с Visual Studio .NET; поддержка наследственности версий языка в ней упразднена. Фрагмент кода VB6 невозможно скомпилировать в Visual Basic .NET (версия 7). Visual Basic .NET имеет мощные функциональные возможности, например, реальное наследование, что делает его настоящим языком объектно-ориентированного (ОО) программирования.
Следует отметить, что стили языков C++, Java и JavaScript оказывают сильное влияние на сообщество веб-программистов, поэтому в качестве языка программирования для интернета нужен язык с похожим стилем. Язык С#, новый язык от Microsoft в пакете Visual Studio .NET, обладает преимуществами языков типа C++ и Java, устраняя их недостатки. Итак, язык C# будет использоваться в данной лекции для демонстрации разработки веб-форм ASP.NET.
Программистам VB потребуется изучить синтаксис нового языка и некоторые
элементы его архитектуры для перехода к работе со средой разработки
Visual Studio .NET Integrated
Расширением файла страницы веб-формы ASP.NET является .aspx, и в этой
лекции такой тип файлов называется ASPX. Каждая веб-форма ASP.NET имеет
связанный с ней класс. Классы файла ASPX содержатся в файле кода формы,
который называется Codebehind. Имя файла Codebehind указывается
следующим образом: <имя_файла>.aspx.<расширение_языка>, где <имя_файла> – имя файла ASPX, <расширение_языка> –
двухсимвольное расширение, отражающее язык файла Codebehind. Если файл
ASPX называется Webform.aspx, то файл Codebehind имеет вид Webform.aspx.cs для языка C# и Webform.aspx для языка Visual Basic.
Файл ASPX содержит визуальные элементы веб-формы, а файл Codebehind
содержит логику, согласно которой эта форма функционирует. Все файлы Codebehind компилируются в динамически подключаемые библиотеки (DLL),
отгружаемые на сервер вместе с соответствующими страницами ASPX.
Библиотеке DLL проекта по умолчанию присваивается имя проекта.
При запросе ASPX в IIS страница обрабатывается посредством расширения
ISAPI ASP.NET aspnet_isapi.dll. Технология .NET генерирует еще одну
временную библиотеку DLL на основе ASPX во время первого запроса файла.
Эта DLL содержит класс, наследуемый от соответствующего класса
веб-формы, сгенерированного в файле Codebehind, и располагается в
библиотеке DLL проекта (см. рис. 2.1).
Такая система существенно обобщает бизнес-логику и логику представления
по сравнению с абстракцией, предлагаемой архитектурой ASP. Файл Codebehind содержит бизнес-логику, а ASPX – логику представления
веб-формы.
(рис 2.1) Обзор архитектуры веб-форм ASP.NETВозможности этих двух файлов усиливают уровень абстракции логики
представления и бизнес-логики. Файлы ASPX – это файлы XML, содержащие
элементы HTML и элементы управления серверной части для создания HTML.
Программист может внедрять бизнес-логику в файлы ASPX, но на это ему
придется затратить дополнительные усилия. Файлы Codebehind – это файлы
с кодом, и разместить в них логику представления гораздо сложнее, чем
использовать файлы ASPX. В ASP абстракция бизнес-логики и логики также
представляет собой сложный процесс, поэтому в ASP логика представления
и бизнес-логика объединяются при разработке программного решения.
Откройте Visual Studio .NET. Вы увидите начальную страницу, если ее отображение разрешено. Как и в предыдущей версии Visual Studio, по умолчанию предоставляется шаблон проекта (эту возможность можно отключить). Создадим новый проект веб-форм ASP.NET.
localhost, если
разрабатываемое программное решение располагается на рабочей станции во
время написания кода и модульного тестирования. В нашем примере указано
имя SimpleWF.
(рис 2.2) Присвоение имени проекту веб-приложения ASP.NET SimpleWFПри успешном подключении Visual Studio .NET к серверу, указанному в окне New Project (Создание проекта), по умолчанию генерируются следующие файлы:
AssemblyInfo.cs ;Global.asax ;Global.asax .resx ;SimpleWF.csproj ;SimpleWF.csproj.webinfo ;SimpleWF.vsdisco ;Web.Config ;WebForm1.aspx ;WebForm1.aspx.cs ;WebForm1.aspx.resx.После создания веб-формы на узле редактор отобразит пустую веб-форму с
именем WebForm1, готовую для редактирования (см. рис. 2.3).
Для редактирования веб-форм в Visual Studio .NET используется дизайнер
веб-форм (Web
(рис 2.3) Веб-форма в представлении Design (Дизайн) дизайнера веб-формОбратное переключение легко осуществляется посредством кнопки Design (Дизайн), расположенной рядом с кнопкой HTML. Дизайнер веб-форм является довольно гибким компонентом и отображает изменения, вносимые вручную в представлении HTML. Файл ASPX редактируется в любом представлении дизайнера веб-форм – все вносимые изменения равнозначны.
Файл ASPX является отображаемым файлом веб-приложения ASP.NET. Конечный
пользователь запрашивает его в своем веб-браузере для реализации функциональных
возможностей веб-приложения ASP.NET. Если конечному пользователю нужно
просмотреть веб-форму этого файла из IIS, необходимо выполнить запрос из
веб-браузера по адресу http://<URL_моего_узла>/<мой_виртуальный_веб-каталог>/WebForm1.aspx,
введя его в адресной строке.
Создаваемому виртуальному каталогу по умолчанию присваивается имя
проекта. Все веб-приложения ASP.NET генерируют виртуальный веб-каталог
при установке в IIS. Файлы WebForm1.aspx.cs и WebForm1.aspx.resx
используются для создания проектной библиотеки DLL – результата
компиляции файла WebForm1.aspx. Файл aspx.cs называется кодом
реализации файла ASPX, а файл ASPX – главным файлом. Файл aspx.cs
содержит весь код, реализующий ASPX, а aspx.resx представляет собой
файл-источник веб-формы.
В листинге 2.1 показано представление HTML файла ASPX веб-формы ASP.NET. В нем можно изменять код HTML и сценарий javascript клиентской части, однако с помощью элементов управления веб-формы ASP.NET в представлении Design (Дизайн) вы создадите сложную веб-страницу без написания кода HTML. Представление Design (Дизайн) дизайнера веб-форм является редактором типа WYSIWIG ("что вижу на экране, то и получаю при печати"), абстрагирующим разработчика от кода HTML и дающим возможность наглядного построения веб-сраниц (по аналогии со средой IDE для приложений рабочего стола в Visual Basic 6). Если вам больше нравится программировать вручную, используйте область HTML-инструментария для получения элементов HTML.
<%@ Page language="c#" Codebehind="requestSomething.aspx.cs" AutoEventWireup="false" Inherits="SimpleWF.requestSomething" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>requestSomething</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="requestSomething" method="post" runat="server">
<asp:TextBox id="txtYourself" style=
"Z-INDEX: 101; LEFT: 193px; POSITION: absolute;
TOP: 46px" runat="server" Width="330px"
Height="25px">
</asp:TextBox>
<asp:Label id="Label1" style=
"Z-INDEX: 102; LEFT: 26px; POSITION: absolute;
TOP: 41px" runat="server" Width="155px"
Height="43px">
Tell me about yourself and click submit:
</asp:Label>
<asp:TextBox id="txtResponse" style=
"Z-INDEX: 103; LEFT: 57px; POSITION: absolute;
TOP: 148px" runat="server" Width="435px"
Height="101px" ReadOnly="True"
TextMode="MultiLine">
</asp:TextBox>
<asp:Button id="Button1" style=
"Z-INDEX: 104; LEFT: 298px; POSITION: absolute;
TOP: 79px" runat="server" Width="131px"
Height="43px" Text="Submit">
</asp:Button>
<asp:Label id="Label2" style=
"Z-INDEX: 105; LEFT: 66px; POSITION: absolute;
TOP: 116px" runat="server" Width="138px"
Height="27px">You Said:
</asp:Label>
</form>
</body>
</HTML>
Первая строка requestSomething.aspx определяет файл Codebehind с именем requestSomething.aspx.cs. использует такие же правила
именования файлов, что и файл requestSomething.aspx, обращаясь к файлу . Назначение файла такое же, как в ASP –
обеспечить место расположения для записи кода, доступное веб-формам
рассматриваемого проекта, которое позволит разработчику фиксировать
события, связанные с приложением. Например, в ASP файл Global.
обеспечивает запуск и остановку приложения, открытие и закрытие сеанса;
файл предоставляет класс Global, наследующий System.Web.HttpApplication и содержащий функции, связанные с этими
событиями. Кроме того, предоставляет события начала и
завершения запроса на ресурсы, процесса аутентификации и ошибок
приложения.
Веб-форма requestSomething.aspx содержит три элемента управления. Они
добавлены из области Web Forms (Веб-формы). В дизайнере веб-форм можно
добавлять элементы управления в веб-форму, как при создании приложения
рабочего стола в Visual Basic или в Visual C++. Интерфейс элементов
управления практически такой же.
Разработчики создают код веб-форм так же, как они программируют классы
форм в Visual Basic или Visual C++. Представление свойств элемента
управления имеет формат XML и располагается в файле ASPX. Технология
.NET использует XML для инициализации нужного элемента управления и
создания кода HTML, возвращаемого потребителю. Инструментарий Visual
Studio .NET позволяет разработчикам выбирать элементы HTML. Например,
элементы DataGrid и таблица HTML реализуют отображение таблицы в
веб-браузере. Элемент управления веб-формы DataGrid дает более обширное
программное управление заполнением и конфигурацией таблицы по сравнению
с элементом таблицы HTML. В листингах 2.2 и 2.3 показаны различия
между элементом управления веб-формы DataGrid и элементами HTML. В
листинге 2.2 приведен код XML, размещенный в файле ASPX и
представляющий собой элемент управления DataGrid.
<asp:DataGrid id="DataGrid2" style="Z-INDEX: 104; LEFT: 88px; POSITION: absolute; TOP: 258px" runat="server"> </asp:DataGrid>
В листинге 2.3 показан элемент HTML, созданный при вставке таблицы из области HTML-инструментария в веб-форму.
<TABLE id="Table1" style="Z-INDEX: 103; LEFT: 191px; POSITION: absolute; TOP: 291px" cellSpacing="1" cellPadding="1" width="300" border="1"> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> </TR> </TABLE>
В простейшей веб-форме requestSomething.aspx (см. рис. 2.4)
пользователь может ввести некоторую личную информацию и нажать на
кнопку Submit (Отправить). После отправки веб-формы он получает ответ в
виде содержимого, введенного им в текстовом поле с именем Tell Me About
Yourself And Click Submit (Расскажите о себе и нажмите на кнопку Submit
[Отправить]), а также в поле You Said (Вы сказали). На рисунке 2.4
показана форма requestSomething.aspx после отправки информации на
сервер.
(рис 2.4) Веб-форма requestSomething.aspx в действии
В классическом ASP разработчик размещает в файле ASP код для извлечения
данных, отправленных пользователем. После извлечения данных из объекта Request они располагаются в атрибуте значения другого текстового поля,
отображающего отправленную пользователем информацию. В файле ASP нужный
результат достигается в строке кода:
<textarea name="txtResponse" ><% =Request("txtYourself") %>
</textarea>
В веб-форме ASP.NET требуется разработка большего объема кода, но с
более высоким уровнем организации. В листинге 2.4 приведен код
веб-формы requestSomething.aspx в файле requestSomething.aspx.cs.
Дизайнер веб-форм автоматически генерирует большую часть кода,
приведенного в листинге 2.4. При открытии файла requestSomehing.aspx в
представлении Design (Дизайн) и двойном щелчке на элементе управления
верхнего текстового поля txtYourself дизайнер веб-форм создаст событие
в файле requestSomething.aspx.cs с именем txtYourself_TextChanged.
Дизайнер веб-форм откроет файл requestSomething.aspx.cs для получения
функции события, созданной для элемента управления txtYourself.
Несмотря на то, что дизайнер веб-форм генерирует большую часть кода в
файле Codebehind, этот код при желании можно редактировать вручную.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for requestSomething.
/// </summary>
public class requestSomething : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox txtYourself;
protected System.Web.UI.WebControls.TextBox txtResponse;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.txtYourself.TextChanged += new
System.EventHandler(this.txtYourself_TextChanged);
this.Load += new
System.EventHandler(this.Page_Load);
}
#endregion
private void txtYourself_TextChanged
(object sender, System.EventArgs e)
{
this.txtResponse.Text = this.txtYourself.Text;
}
}
}
Обработчик события веб-формы вызывается при изменении и отправке на
веб-сервер значения txtYourself в форме. После отправки формы серверу
файл Codebehind веб-формы requestSomething.aspx определяет, что
отправлено значение текстового поля txtYourself и вызывает функцию
события txtYourself_TextChanged. В нашем примере для размещения
значения, отправленного в текстовое поле txtResponse, создана
единственная строка кода:
this.txtResponse.Text = this.txtYourself.Text;
Оба текстовых поля воспринимаются как элементы управления или экземпляры классов в обычном программном приложении, полностью абстрагируя программиста от деталей HTML. Так как программист может вставлять элементы управления в представлении Design (Дизайн) и изменять код, связанный с действием элемента управления, щелкнув на этом элементе, он практически полностью избавляется от редактирования кода HTML.
Проект ASP.NET с именем SimpleWF создает библиотеку – установочный
пакет для файлов веб-формы, из которых состоит проект; эта библиотека
является обычной DLL. Библиотека создается при первом запросе файла
ASPX из IIS. Файл Codebehind и файл источника, ссылки на которые
содержатся в файле ASPX, компилируются в языке инструкций Microsoft
(MISL). Формат этого языка аналогичен коду библиотеки в отличие от
двоичных продуктов других компиляторов. MISL создается только для
исполняемых подпрограмм кода.
Файлы AssemblyInfo.cs, SimpleWF.csproj, SimpleWF.csproj.webinfo и SimpleWF.vsdisco поставляют компилятору необходимую информацию для
создания библиотеки, содержащей код MISL, сгенерированный из файлов
ASP.NET. Информация в файле AssemblyInfo.cs представляет собой описание
библиотеки, например, ее версию и имя. Этот файл можно использовать для
подписи библиотек посредством присвоения ключа, который является
механизмом защиты библиотеки от реинжиниринга. В листинге 2.5 приведен
код пустого файла AssemblyInfo.cs. Файл библиотеки можно редактировать
напрямую, и для этого не требуется высокого уровня знаний. Укажите
известные значения, оставив другие значения незаполненными.
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
Файл csproj является файлом XML и содержит информацию о зависимостях
проекта и некоторых параметрах компиляции библиотеки. Visual Studio
.NET обновляет этот файл по мере добавления или удаления из проекта
веб-форм и ссылок. Не следует изменять файл csproj при обычной работе с
проектом ASP.NET. При открытии файла в браузере отображается информация
обо всех параметрах и элементах, составляющих проект: имена файлов,
параметры реализации и ссылки библиотеки и т.д.
Файл csproj.webinfo представляет собой файл XML и описывает
расположение файла проекта. В листинге 2.6 приведено содержание файла SimpleWF.csproj.webinfo. Он также генерируется и обновляется Visual
Studio. .NET, и его не следует редактировать напрямую.
<VisualStudioUNCWeb> <Web URLPath = "http://amd1700/SimpleWF/SimpleWF.csproj" /> </VisualStudioUNCWeb>
Файл vsdisco определяет пути поиска на сервере разработки, что дает
ASP.NET возможность нахождения веб-служб ASP.NET. Файл SimpleWF.vsdisco
генерируется для проекта SimpleWF по умолчанию. В листинге 2.7
приведен исходный код файла SimpleWF.vsdisco. Для упрощения поиска
ASP.NET других библиотек в среде разработки следует отредактировать
файл vsdisco, указав в нем веб-каталоги, в которых не нужно
осуществлять поиск. В версии vsdisco по умолчанию исключаются папки
расширения FrontPage, так как обычно библиотеки в этих папках не
содержатся.
<?xml version="1.0" encoding="utf-8" ?>
<dynamicDiscovery xmlns=
"urn:schemas-dynamicdiscovery:disco.2000-03-17">
<exclude path="_vti_cnf" />
<exclude path="_vti_pvt" />
<exclude path="_vti_log" />
<exclude path="_vti_script" />
<exclude path="_vti_txt" />
<exclude path="Web References" />
</dynamicDiscovery>
Файл web.config представляет собой файл конфигурации IIS. Программист
использует его для настройки IIS на определенную работу в процессе
разработки. Когда проект ASP.NET готов к реализации, сайт или
виртуальный каталог IIS немедленно настраивается согласно этой
конфигурации. Параметры файла web.config применяются ко всем папкам
каталога, в котором расположен данный файл, если ни в одной из них не
содержится другого файла web.config (в веб-приложении их может
содержаться несколько). Если файл web.config отсутствует, то по
умолчанию используется файл machine.config, расположенный в папке $:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG. Фрагмент пути
v1.1.4322 отражает версию технологии .NET, используемой на сервере. В
листинге 2.8 приведен файл по умолчанию web.config, созданный в
проекте SimpleWF.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation
defaultLanguage="c#"
debug="true"
/>
<customErrors
mode="RemoteOnly"
/>
<authentication mode="Windows" />
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString=
"data source=127.0.0.1;user id=sa;password="
cookieless="false"
timeout="20"
/>
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>
Параметры приложения устанавливаются как дочерние элементы элемента appSettings, который, в свою очередь, является дочерним по отношению к
элементу configuration. Файл web.config по умолчанию не содержит
параметров приложения. Эти параметры обычно включаются динамическими
свойствами элементов управления, добавленных в веб-формы в дизайнере
веб-форм или введенных вручную. Параметры приложения содержат значения
инициализации компонентов приложения. Об использовании файла web.config
для хранения и извлечения параметров приложения более подробно
рассказывается в лекции 3.
Элемент system.web имеет дочерние элементы, содержащие параметры
управления механизмом самого веб-приложения. При отсутствии дочерних
элементов приложение использует параметры файла machine.config.
Приведенный ниже список возможных параметров далеко не полон, однако
формирующие этот список дочерние элементы элемента system.web по
умолчанию присутствуют в файле web.config, созданном Visual Studio
.NET:
Отображение информации из базы данных в таблице HTML реализуется с
помощью элемента управления веб-формы DataGrid. В представлении Design
(Дизайн) выберите DataGrid в инструментарии и вставьте этот элемент в
веб-форму. При отображении кода HTML вы имеете дело с представлением
формы в HTML. На рисунке 2.3 изображена веб-форма в представлении
Design (Дизайн).) После добавления в форму элемента DataGrid его можно
переименовать в окне свойств. На рисунке 2.5 мы видим, что элементу DataGrid присвоено имя dgChair.
(рис 2.5) Окно свойств элемента управления DataGridЗапуск веб-формы в Visual Studio .NET на данном этапе вызовет
компиляцию веб-формы в библиотеку на сервере разработки. В нашем
примере сервер разработки, на котором расположена веб-форма, называется
amd1700. Для компиляции веб-формы и запуска ее в режиме отладки в
Visual Studio .NET нажмите на клавишу F5. Visual Studio .NET
скомпилирует веб-форму и перейдет в
После завершения компиляции на рабочей станции откроется браузер с
отображением веб-формы. Сервер разработки выполнит действия,
необходимые для отображения веб-страницы, и браузер откроет пустую
страницу. При закрытии браузера сеанс отладки завершится, и Visual
Studio .NET вернется в режим редактирования. В данном упражнении
отображается пустая страница, поскольку элемент DataGrid dgChair не
содержит никаких данных. Для отображения элементом DataGrid данных
нужно создать в файле Codebehind код, реализующий получение элемента DataSet и размещение данных в элементе управления dgChair.
Чтобы изменить файл Codebehind веб-формы с элементом dgChair, щелкните
правой кнопкой мыши на файле веб-формы в Solution Explorer или правой
кнопкой мыши на самом файле в представлении Design (Дизайн). Затем
выберите View Code (Просмотреть код). По умолчанию Visual Studio .NET
отображает в Solution Explorer не все файлы программного решения.
Щелкните на значке Show All Files (Показать все файлы) в верхней части
Solution Explorer для показа всех файлов, чтобы выбрать файл Codebehind.
Файл Codebehind отобразится с директивами using для классов,
необходимых для функционирования веб-формы, с пространством имен и
структурой классов. Пространство имен носит то же имя, что и
рассматриваемый проект. Имя класса совпадает с именем веб-формы. В
листинге 2.9 приведен исходный код веб-формы showGrid. Веб-форма showGrid демонстрирует элемент управления DataGrid. Дизайнер веб-форм
разместил защищенный элемент в классе showGrid, представляющий элемент dgChair, добавленный в веб-форму. Ссылка using System.Data.OleDb
добавлена для простоты обращения к классам ADO.NET.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //for the OleDbclasses
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for showGrid.
/// </summary>
public class showGrid : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgChair;
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler
(this.Page_Load);
}
#endregion
}
}
Если вам нужно заполнить элемент dgChair данными из таблицы базы
данных, то требуется получение набора данных ADO.NET DataSet с
информацией из базы данных. Набор DataSet используется для заполнения
элемента dgChair при запросе веб-страницы с веб-сервера. При загрузке
страницы с веб-сервера вызывается событие Load объекта Page. Класс showGrid наследуется из System.Web.UI.Page, как видно из объявления
класса в листинге 2.9, поэтому событие Load также наследуется из System.Web.UI.Page. При выполнении события Load происходит получение
набора DataSet и заполнения элемента DataGrid. В листинге 2.10
приведена подпрограмма LoadGrid, реализующая заполнение элемента DataGrid набором DataSet.
private void LoadGrid(DataGrid dg)
{
//set the connection credentials
string DataSetName = "myChairs";
string ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\aspData\\employees.mdb;";
//make the DB connection
OleDbConnection myConn = new
OleDbConnection(ConnectionString);
//make a data set to hold chairs
DataSet myDataSet = new DataSet(DataSetName);
//make a data adaptor
OleDbDataAdapter myAdapt = new
OleDbDataAdapter("Select * From tblChair", myConn);
//fill the dataset
myAdapt.Fill(myDataSet);
//get a view in the dataset
DataView myDataView = new DataView(myDataSet.Tables[0]);
//show the data view in the Grid
dg.DataSource = myDataView;
dg.DataBind();
}
LoadGrid представляет собой функцию, входящую в класс showGrid. Функция
вызывается посредством размещения следующего вызова в функции события Page_Load файла showGrid.aspx:
LoadGrid(dgChair);
При загрузке страницы showGrid.aspx фиксируется событие Load и
вызывается функция LoadGrid. При вызове функции LoadGrid
устанавливается подключение к базе данных посредством строковой
переменной и инициализируется объект подключения ADO Connection.
Примечание. Следует отметить, что указывать символьные аргументы строки
подключения в коде, как в листинге 2.10, крайне не рекомендуется. Это
сделано, чтобы показать аутентификационные данные, используемые для
подключения, а также метод их применения к объекту Connection.
Рекомендуем получать аутентификационные данные, размещая строки
подключения к базе данных в файле web.config (см. лекции 3).
В листинге 2.10 используется источник данных Microsoft Access 2000.
Чтобы веб-форма ASP.NET могла считывать и записывать информацию в файл
базы данных Access, необходимо настроить файловые разрешения сервера
для файлов данных Access ( .mdb ). При использовании базы данных
корпоративного уровня, например, SQL Server или Oracle, для передачи
аутентификационных данных серверу базы данных при ее запросе веб-формой
ASP.NET возможно применение интегрированной безопасности. Аргумент integrated security=sspi в строке подключения к базе данных указывает
использование интегрированной безопасности, и аутентификационные данные
Windows .NET Server предоставляются источнику данных. Учетная запись
пользователя Windows, используемая приложением ASP.NET, меняться в
зависимости от следующих критериев.
В зависимости от метода аутентификации в приложении IIS ASP.NET использует следующие учетные записи Windows.
IUSER_<имя_компьютера>Если IIS настроен на разрешение анонимного доступа к сайту, и для сервера установлен режим изоляции приложения по умолчанию (т.е. режим изоляции рабочих процессов), то ASP.NET использует субъект в пуле приложения, занятом веб-приложением. Если режим изоляции IIS 5.0 используется для обеспечения обратной совместимости, то субъектом пула приложения будет гостевая учетная запись IIS. Если приложение настроено на использование одного из режимов аутентификации, доступных в IIS и предусматривающих предоставление аутентификационных данных пользователем, то IIS по умолчанию использует в качестве субъекта аутентификационные данные. Субъекты, используемые по умолчанию приложением IIS, приведены в табл. 2.1.
В рассматриваемом приложении (или в любом другом) возможны и другие
Для веб-формы showGrid.aspx применяется режим изоляции рабочих
процессов. Анонимный доступ будет разрешен, поэтому аутентификационными
данными учетной записи Windows пула приложений станут входные данные,
используемые для доступа к источнику информации. Для файла базы данных
Microsoft Access файловые разрешения несущего сервера устанавливаются
так, чтобы учетная запись Windows производила чтение, запись и
изменение файла .mdb. Если речь идет о базе данный корпоративного
уровня, то учетной записи Windows нужно предоставить соответствующий
доступ к базе данных на сервере базы данных.
Примечание. Следует помнить, что файл web.config содержит элемент authentication. Режимом элемента аутентификации по умолчанию является
Windows. Так как многие программисты используют учетную запись группы
администраторов, то впечатление о правильности параметров в форме
ASP.NET может быть обманчивым, так как эта учетная запись наделена
правами на выполнение практически любых действий в среде разработки.
При перемещении приложения на тестовый или конечный сервер с
ограниченными разрешениями доступа возможно, что веб-форма не будет
функционировать.
| Аутентификация | Режим изоляции приложения | Учетная запись Windows, используемая ASP.NET |
|---|---|---|
| Анонимная | Изоляция IIS 5.0 | IUSER_<имя_компьютера>. |
| Анонимная | Изоляция рабочих процессов | Субъект пула приложения для веб-приложения. |
| Не анонимная | Изоляция IIS 5.0 | Аутентификационные данные, предоставленные пользователем при проверке подлинности. |
| Не анонимная | Изоляция рабочих процессов | Аутентификационные данные, предоставленные пользователем при проверке подлинности. |
Для заполнения элемента dgChair данными из таблицы базы данных мы будем
использовать ADO.NET, поэтому нужно добавить в файл showGrid.aspx
пространство имен для классов данных, необходимых для доступа к
источнику данных. Веб-формы по умолчанию содержат пространство имен System.Data, являющееся главным пространством имен ADO.NET. Другие
пространства имен, подчиненные System.Data, поддерживают определенные
типы источников данных. Стандартными пространствами имен, подчиненными System.Data, являются следующие.
System.Data.Common. System.Data.OleDb. System.Data.SqlClient. System.Data.SqlTypes.
Пространство имен SqlClient обеспечивает интерфейс к провайдеру SQL
Server и наиболее эффективный способ связи с SQL Server 2000.
Пространство имен System.Data.OleDb поддерживает интерфейс, аналогичный
традиционной технологии ADO; оно неэффективно при подключении к SQL
Server 2000. System.Data.Ole.Db рекомендуется для работы с источниками
данных, отличными от SQL Server 2000, имеющими провайдера OLE-DB.
Пространства имен System.Data.Common и System.Data.SqlTypes
обеспечивают интерфейсы для SQL Server и общие интерфейсы между SQL
Server и классами OLE-DB.
ADO.NET поставляется в виде единственной библиотеки – System.Data.dll.
Если необходима поддержка источника данных ODBC, Microsoft предлагает
другую библиотеку (ее можно загрузить из интернета) для обеспечения
пространства имен классов ODBC.
Поскольку источником данных, рассматриваемым в примерах данной лекции,
является Microsoft Acess 2000, то следует использовать пространство
имен OleDb. Если источником данных является SQL Server 2000, то
используется пространство имен SqlClient – это наиболее эффективный
способ установки связи с SQL Server 2000. Вверху файла showGid.aspx
необходимо вместе с остальными директивами пространства имен ввести
следующую строку кода:
using System.Data.OleDb; //for the OleDb classes
После установки соединения выполняется запрос экземпляра набора данных
ADO.NET myDataSet таблицы tblChairs базы данных. Набору данных DataSet
при инициализации присваивается имя myChairs. Инициализируется объект
ADO.NET Adaptor для заполнения экземпляра myDataSet. После этого
инициализируется объект ADO.NET DataView с именем myDataView с
использованием первой таблицы набора данных myDataSet. В итоге аргумент DataGrid с именем dg, переданный подпрограмме, устанавливает свойство
источника данных на экземпляр DataView с именем myDataView, и вызывает
метод DataBind аргумента dg для заполнения экземпляра dg элемента DataGrid данными из таблицы tblChairs.
Использование класса DataView не является обязательным, если нужно
отобразить весь набор данных DataSet. В элементе dg (см. листинге
2.10) отображается весь созданный набор данных DataSet, поэтому можно
опустить следующую строку:
DataView myDataView = new DataView(myDataSet.Tables[0]);
Свойство DataSource элемента dg установим равным значению Tables[0]
свойства набора данных myDataSet. Строку, присваивающую dg.DataSource
источнику myDataView, изменим следующим образом:
dg.DataSource = myDataSet.Tables[0]
При нажатии на клавишу F5 будет скомпилирована страница showGrid.aspx,
затем откроется окно браузера с отображением данных в таблице myChairs
(см. рис. 2.6).
(рис 2.6) Отображение результатов работы showGrid.aspx с использованием DataGrid
Помимо DataGrid для отображения информации из базы данных используются
и другие типы элементов управления данными. Элемент управления
применяется для отображения данных в формате, отличном от табличной
формы. В листинге 2.11 приведен исходный код файла ,
представляющий собой веб-форму, в которой элемент управления
заполняется данными с помощью набора ADO.NET Dataset.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //for the OleDb classes
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace SimpleWF
{
/// <summary>
/// Summary description for datalist.
/// </summary>
public class datalist : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList dlChair;
private void LoadList(DataList dl)
{
//set the connection credentials
string DataSetName = "myChairs";
string ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\aspData\\employees.mdb;";
//make the DB connection
OleDbConnection myConn = new
OleDbConnection(ConnectionString);
//make a data set to hold chairs
DataSet myDataSet = new DataSet(DataSetName);
//make a data adaptor
OleDbDataAdapter myAdapt = new
OleDbDataAdapter("Select * From tblChair", myConn);
//fill the dataset
myAdapt.Fill(myDataSet);
//show the data in the data list
dl.DataSource = myDataSet;
dl.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
LoadList(this.dlChair);
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the
// ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
использует иной механизм построения DataSet, называемый
шаблоном. Шаблон описывает способ отображения данных в элементе
управления DalaList. Щелкните правой кнопкой мыши на и
выберите любую из опций редактирования шаблона в команде Edit Template
(Изменить шаблон) контекстного меню. В шаблоне настраиваются заголовки
или имена полей, определяющие отображение данных. В
присутствуют также верхние, нижние колонтитулы и названия. Для указания
данных из определенного набора DataSet необходимо изменить шаблон в
представлении HTML. Теги <%# и %> означают присоединение данных в
странице веб-формы. В коде шаблона указываются поля присоединения
данных. В листинге 2.12 приведен код файла , отображаемый
в представлении HTML.
<%@ Page language="c#" Codebehind="datalist.aspx.cs"
AutoEventWireup="false" Inherits="SimpleWF.datalist" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>datalist</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" bgColor="#ffffff">
<form id="datalist" method="post" runat="server">
<asp:DataList id="dlChair" style=
"Z-INDEX: 102; LEFT: 18px; POSITION: absolute;
TOP: 34px" runat="server" Height="301px"
Width="316px">
<ItemTemplate>
<DIV style="PADDING-RIGHT: 15px;
PADDING-LEFT: 15px; PADDING-BOTTOM:
15px; FONT: 12pt verdana;
COLOR: black; PADDING-TOP: 15px"
align="left">ID:</DIV>
<%# DataBinder.Eval(Container.DataItem, "ID")%>
<DIV style="PADDING-RIGHT: 15px; PADDING-LEFT:
15px; PADDING-BOTTOM: 15px;
FONT: 12pt verdana;
COLOR: black; PADDING-TOP: 15px"
align="left">Color:</DIV>
<%# DataBinder.Eval(Container.DataItem, "Color")%>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</HTML>
определяется элементами HTML <asp:. Внутри
тегов элемента располагаются теги шаблона, определяемые тегом <ItemTemplate>. Свойства шаблона в дизайнере веб-форм генерируют
теги внутри тегов <ItemTemplate>, однако их можно отредактировать
вручную в представлении HTML. Теги присоединения данных можно
стратегически расположить внутри шаблона в тех местах, где должны
отображаться соответствующие поля набора данных DataSet. В листинге
2.12 приведены два поля из отображаемого набора DataSet – ID и Color.
Тег присоединения для поля ID имеет вид <%#DataBinder.Eval(Container.DataItem, "ID")%>, а тег
присоединения поля Color – <%#DataBinder.Eval(Container.DataItem,
"Color")%>.
При запуске сгенерирован тот же набор DataSet, как в
примере с элементом DataGrid (см. рис. 2.6). Однако формат данных
отличается от предыдущего примера (см. рис. 2.7), поскольку данные
отформатированы по шаблону, приведенному в листинге 2.12.
(рис 2.7) Результат работы файла datalist .aspx, полученный при помощи
шаблона для форматирования набора DataSet
Дизайнер веб-форм содержит мастер для создания форм, отображающий наборы данных из источника. Для работы с мастером форм данных (Data From Wizard) выполните следующие действия.
employees.aspx.DataSet. В данном примере создан набор DataSet с именем dsEmps (см. рис. 2.9). Все наборы DataSet, создаваемые в мастере,
становятся элементами проекта и могут использоваться другими
веб-формами или веб-службами внутри этого проекта. Файл DataSet имеет
расширение (рис 2.9) Окно Choose The Dataset You Want To Use (Выберите нужный набор данных) мастера форм данных (Data Form Wizard)tblEmployee (см.
рис 2.11(рис 2.11) Окно Choose Tables Or Views (Выберите таблицы или образы) мастера форм данныхОтметьте нужные столбцы для отображения в веб-форме.
При выборе несколько таблиц появится окно Create A Relationship Between
Tables (Создать отношение между таблицами), в котором выбираются ключи
и отношения таблиц. В нашем примере для отображения выбраны все столбцы
таблицы tblEmployee (см. рис. 2.12).
На рисунке 2.13 показана веб-форма employees.aspx, отображенная в
представлении Design (Дизайн). Элементы управления можно перемещать для
нужной настройки их отображения. Код, лежащий в основе формы, довольно
высокого уровня, в нем присутствует даже обработка ошибок!
(рис 2.13) Результирующая веб-форма, сгенерированная мастером форм данных, отображенная в представлении Design (Дизайн)Если employees.aspx установлена в качестве стартовой страницы, то
нажмите на клавишу F5 для компиляции employees.aspx, чтобы открыть
браузер и отобразить веб-форму. На пустой странице будет показана
кнопка Load (Загрузить). Нажмите на кнопку Load (Загрузить), и данные
отобразятся в браузере (см. рис. 2.14).
(рис 2.14) Веб-форма employees.aspx, сгенерированная мастером форм данных и отображающая информацию из таблицы tblEmployee
В веб-формах можно использовать элемент управления XML, реализующий XML, XSL и XSL Transformations (XSLT). Для получения веб-формы, осуществляющей преобразование XML и XSL, создайте новую веб-форму и в представлении Design (Дизайн) вставьте в форму элемент управления XML (см. рис. 2.15). Элемент управления XML предназначен, главным образом, для интеграции веб-форм в приложении, использующем XSL для инкапсуляции логики представления.
Элемент управления XML настраивается в окне свойств (см. рис. 2.15). В этом окне указывается файл XML или XSLT/XSL, и при открытии страницы осуществляется преобразование XML и XSL в HTML. Если в элементе управления указаны файлы, они должны являться частью проекта, отображаемого в Solution Explorer.
(рис 2.15) Отображение в представлении Design (Дизайн) формы с элементом управления XMLРазмещение в форме элемента управления XML ограничено: дизайнер веб-форм позволяет располагать его только в левом верхнем углу представления Design (Дизайн) (см. рис. 2.15), хотя некоторые элементы управления размещаются и под элементами управления XML. Дизайнер веб-форм может не воспринять действительную структуру страницы в документе XSL или XSLT, поэтому его возможности по отображению страницы в представлении Design (Дизайн) сильно ограничены.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.