Пошаговое руководство. Привязка данных к пользовательским бизнес-объектам
Обновлен: Ноябрь 2007
Многие веб-приложения строятся с использованием нескольких уровней, с одним или несколькими компонентами на среднем уровне для обеспечения доступа к данным. В средстве Microsoft Visual Web Developer имеется мастер, помогающий строить компоненты с данными, которые можно использовать в качестве объекта данных среднего уровня, как это описано в разделе Пошаговое руководство. Привязка данных веб-страниц с помощью компонента данных Visual Studio.
Однако может понадобиться построить пользовательский бизнес-объект вместо компонента данных, создаваемого мастером. Создание пользовательского бизнес-объекта позволяет реализовывать собственную бизнес-логику. В данном пошаговом руководстве показано, как создавать базовые бизнес-объекты, которые можно использовать в качестве источников данных для веб-страниц ASP.NET.
В процессе выполнения этого пошагового руководства вы научитесь:
Создавать компонент, который будет возвращать данные на веб-страницу. Данные этого компонента хранятся в файле XML.
Создавать ссылку на бизнес-объект, как на источник данных на веб-странице.
Привязывать элемент управления к данным, возвращаемым бизнес-объектом.
Читать и записывать данные при помощи бизнес-объектов.
Обязательные компоненты
Для выполнения этого пошагового руководства потребуется:
Программа Visual Web Developer (Visual Studio).
Платформа .NET Framework.
Данное пошаговое руководство предполагает, что вы имеете базовые знания по работе в среде Visual Web Developer.
Создание веб-узла
Если вы уже создали веб-узел в среде Visual Web Developer (например, выполнив действия из Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer), то можно использовать этот веб-узел и перейти к следующему разделу — «Создание XML-файла для бизнес-данных». В противном случае создайте новый веб-узел и страницу, выполнив следующие действия.
Создание файлового веб-узла
Откройте Visual Web Developer.
В меню Файл выберите Создать, Веб-узел.
Откроется диалоговое окно Создать веб-узел.
В группе Установленные шаблоны Visual Studio выберите Веб-узел ASP.NET.
В поле Расположение введите имя папки, где нужно хранить страницы веб-узла.
Например, введите имя папки C:\WebSites.
В списке Язык выберите предпочтительный язык программирования.
Нажмите кнопку ОК.
Visual Web Developer создаст папку и новую страницу с именем Default.aspx.
Создание XML-файла для бизнес-данных
В ходе следующей процедуры будет создан простой XML-файл для данных деловых компонентов.
Создание XML-файла
В обозревателе решений щелкните правой кнопкой мыши папку App_Data и выберите команду Добавитьновый элемент.
Примечание.
Убедитесь, что создается файл с расширением XML в папке App_Data. Папка App_Data имеет соответствующие разрешения, которые позволяют веб-странице записывать и считывать данные из XML-файла.
В разделе Установленные шаблоны Visual Studio выберите XML-файл.
В поле Имя введите Authors.xml.
Щелкните Добавить.
Создан новый XML-файл, содержащий директиву XML.
Скопируйте приведенные ниже XML-данные и вставьте их в файл, перезаписав имеющееся в нем содержимое.
XML-файл содержит информацию о схеме, которая идентифицирует структуру базы данных, включая ограничение для первичного ключа.
Примечание.
Деловые компоненты могут работать с данными любыми способами, подходящими для приложения. В пошаговом руководстве используется XML-файл.
<?xml version="1.0" standalone="yes"?> <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd"> <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="dsPubs" msdata:IsDataSet="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="authors"> <xs:complexType> <xs:sequence> <xs:element name="au_id" type="xs:string" /> <xs:element name="au_lname" type="xs:string" /> <xs:element name="au_fname" type="xs:string" /> <xs:element name="au_phone" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:authors" /> <xs:field xpath="mstns:au_id" /> </xs:unique> </xs:element> </xs:schema> <authors> <au_id>172-32-1176</au_id> <au_lname>West</au_lname> <au_fname>Paul</au_fname> <au_phone>408 555-0123</au_phone> </authors> <authors> <au_id>213-46-8915</au_id> <au_lname>Gray</au_lname> <au_fname>Chris</au_fname> <au_phone>415 555-0120</au_phone> </authors> </dsPubs>
Сохраните и закройте файл Authors.xml.
Создание компонентов
Далее необходимо создать класс, функционирующий как деловой компонент. Компонент будет храниться в папке App_Code веб-узла. В реальных приложениях компонент можно хранить в любом удобном хранилище, включая глобальный кэш сборок. Если веб-узел не содержит каталога с именем App_Code, то создайте ее.
Создание папки App_Code
В обозревателе решений щелкните правой кнопкой мыши имя веб-узла, выберите команду Добавить папку ASP.NET, а затем выберите App_Code.
Примечание.
Папка должна называться App_Code.
Теперь компонент можно добавить к узлу.
Создание делового компонента
В обозревателе решений щелкните правой кнопкой мыши папку App_Code и выберите команду Добавление нового элемента.
Примечание.
Убедитесь, что создаете новый элемент в папке App_Code.
Открывается диалоговое окно Добавление нового элемента.
Под заголовком Установленные шаблоны Visual Studio выберите Класс.
В списке Язык выберите предпочитаемый язык программирования.
В поле Имя введите BusinessObject.
Выберите Добавить.
В Visual Web Developer будет создан новый класс файлов и откроется редактор кода.
Скопируйте следующий код и вставьте его в файл, заменив уже имеющийся там код.
Imports Microsoft.VisualBasic Imports System Imports System.Web Imports System.Data Namespace PubsClasses Public Class AuthorClass Private dsAuthors As DataSet = _ New System.Data.DataSet("ds1") Private filePath As String = _ HttpContext.Current.Server.MapPath _ ("~/App_Data/authors.xml") Public Sub New() dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema) End Sub Public Function GetAuthors() As DataSet Return dsAuthors End Function End Class End Namespace
using System; using System.Web; using System.Data; namespace PubsClasses { public class AuthorClass { private DataSet dsAuthors = new DataSet("ds1"); private String filePath = HttpContext.Current.Server.MapPath ("~/App_Data/Authors.xml"); public AuthorClass() { dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema); } public DataSet GetAuthors () { return dsAuthors; } } }
Примечание.
Убедитесь, что значение переменной filePath ссылается на имя предварительно созданного XML-файла.
При создании нового экземпляра класса, он читает XML-файл и передает его в набор данных. Метод класса GetAuthors возвращает набор данных.
Сохраните файл. Для правильной работы в следующем разделе необходимо сохранить файл.
Отображение данных при помощи деловых компонентов
Теперь можно вызывать деловой компонент на веб-странице и отображать содержащиеся в нем данные. Для ссылки на компонент используйте элемент управления ObjectDataSource, который специально создан для работы с объектами.
Создание элемента управления ObjectDataSource, ссылающегося на компонент
Переключитесь на страницу Default.aspx или откройте ее.
Примечание.
Если страница Default.aspx не существует, можно использовать другую страницу. Также можно добавить к веб-узлу новую страницу. В обозревателе решений щелкните правой кнопкой мыши имя веб-узла и выберите Добавление нового элемента, а затем добавьте новую Веб-форму.
Перейдите в представление конструирования.
Из группы Данные в Панели элементов перетащите на страницу элемент управления ObjectDataSource.
В окне «Свойства» присвойте свойству AuthorsObjectDataSource значение Идентификатор.
Щелкните правой кнопкой мыши элемент управления ObjectDataSource и щелкните смарт-тег, чтобы отобразить меню Задачи ObjectDataSource.
В меню Задачи ObjectDataSource выберите команду Настройка источника данных.
Появится мастер Настройки источника данных.
В списке Выбрать бизнес-объект выберите PubsClasses.AuthorClass.
Нажмите кнопку Далее.
На вкладке Выбрать в списке Выбрать метод нажмите GetAuthors(), returns Dataset.
Метод GetAuthors задан в предварительно созданном деловом классе. Он возвращает набор данных, в котором содержатся данные из файла Authors.xml.
Нажмите кнопку Готово.
Введенные сведения о конфигурации указывают на то, что для получения данных из компонента необходимо вызвать метод GetAuthors.
Примечание.
Заданное имя метода для свойства SelectMethod чувствительно к регистру, даже при программировании на Visual Basic .NET.
Теперь данные из компонента можно получать при помощи элемента управления ObjectDataSource. Теперь данные будут отображаться в элементе управления GridView на странице.
Отображение данных компонента
Из папки Данные в Панели элементов перетащите на страницу элемент управления GridView.
Щелкните правой кнопкой мыши элемент управления GridView и щелкните смарт-тег, если меню Общие задачи GridView не отображается.
В меню Общие задачи GridView в поле Choose Data Source выберите AuthorsObjectDataSource.
Чтобы запустить страницу, нажмите клавиши CTRL + F5.
Элемент управления GridView отображается с XML-данными.
Вставка данных при помощи деловых компонентов
Так же как и другие элементы управления источниками данных, такие как элемент управления SqlDataSource, элемент управления ObjectDataSource поддерживает обновление (вставку, обновление и удаление). В данном разделе деловой компонент будет модифицироваться при помощи метода, вставляющего авторскую запись. После этого страница будет изменена так, чтобы пользователи могли вводить новые авторские данные и изменять элемент управления ObjectDataSource, чтобы производить вставку.
![]() |
---|
В данной части пошагового руководства предварительно созданный файл Authors.xml будет обновляться. Необходимо, чтобы приложение имело права на запись в файл во время выполнения, в противном случае веб-страница будет выдавать ошибку при попытке обновления файла. Если файл Authors.xml создан в папке App_Data, то разрешения устанавливаются автоматически. |
Изменение делового компонента для разрешения вставки
Перейдите к файлу BusinessObject.
Добавьте следующий метод в качестве последнего члена класса AuthorClass.
Public Sub InsertAuthor(ByVal au_id As String, _ ByVal au_lname As String, _ ByVal au_fname As String, ByVal au_phone As String) Dim workRow As DataRow = dsAuthors.Tables(0).NewRow workRow.BeginEdit() workRow(0) = au_id workRow(1) = au_lname workRow(2) = au_fname workRow(3) = au_phone workRow.EndEdit() dsAuthors.Tables(0).Rows.Add(workRow) dsAuthors.WriteXml(filePath, Data.XmlWriteMode.WriteSchema) End Sub
public void InsertAuthor (String au_id, String au_lname, String au_fname, String au_phone) { DataRow workRow = dsAuthors.Tables[0].NewRow (); workRow.BeginEdit (); workRow[0] = au_id; workRow[1] = au_lname; workRow[2] = au_fname; workRow[3] = au_phone; workRow.EndEdit (); dsAuthors.Tables[0].Rows.Add (workRow); dsAuthors.WriteXml (filePath, XmlWriteMode.WriteSchema); }
Примечание.
Обратите внимание на имена переменных, используемых для передачи авторских данных в метод (au_id, au_lname, au_fname и au_phone). Они должны совпадать с именами столбцов, указанных в схеме предварительно созданного XML-файла.
Новый метод берет четыре значения для вставки, которые будут вводиться на странице в качестве параметров. Метод создает новую строку в наборе данных, а затем записывает обновленный набор данных в XML-файл.
Сохраните файл.
Следующим действием будет изменение страницы, чтобы пользователи могли вводить новые авторские данные. В ходе следующей процедуры будет использоваться элемент управления DetailsView.
Добавление элемента управления для вставки данных
Переключитесь на страницу Default.aspx или откройте ее.
Перейдите в режим конструктора.
Из группы Данные в Панели элементов перетащите на страницу элемент управления DetailsView.
Примечание.
Точный макет страницы не имеет значения.
В меню Задачи DetailsView в поле Выбор источника данных выберите AuthorsObjectDataSource.
Примечание.
Если меню Задачи DetailsView не отображается, то щелкните смарт-тег.
В окне «Свойства» присвойте свойству AutoGenerateInsertButton значение true.
В результате элемент управления DetailsView отобразит кнопку Создать, которую пользователи смогут нажимать для переключения элемента управления в режим ввода данных.
В конце необходимо настроить элемент управления ObjectDataSource, то есть указать действие, которое элемент управления должен осуществлять для вставки данных.
Настройка источника данных для вставки данных
Щелкните правой кнопкой мыши AuthorsObjectDataSource, выберите пункт Свойства и присвойте свойству InsertMethod значение InsertAuthor.
Это имя метода, указанное при добавлении делового компонента.
Теперь можно вставлять новые авторские данные в XML-файл.
Проверка вставки
Для запуска страницы Default.aspx нажмите клавиши CTRL+F5.
Нажмите кнопку Создать на элементе управления DetailsView.
Элемент управления отобразится заново, но уже с текстовыми полями.
Введите новые авторские данные и нажмите кнопку Вставить.
Новые авторские данные добавлены в XML-файл. Новая запись сразу отобразится в элементе управления GridView.
Следующие действия
В данном руководстве было показано, как работать с компонентом данных. Возможно, потребуется поэкспериментировать с дополнительными возможностями переходов. Ниже перечислены некоторые из таких возможностей.
Добавление функциональных возможностей обновления и удаления. Чтобы это сделать, необходимо добавить новые методы в компонент. Порядок действий похож на добавление логики вставки — в компонент добавляется новый метод, элемент управления источником данных настраивается на вызов метода компонента, добавляются соответствующие параметры, и добавляется строка кода для вызова методов Update и Delete элемента управления источником данных. Дополнительные сведения см. в разделе Пошаговое руководство. Редактирование и вставка данных в веб-страницы с помощью серверного веб-элемента управления DetailsView.
Изменение деловых компонент для работы с базой данных вместо XML-файла. Для этого не требуется вносить изменения в элементы управления на странице.
Выбор пользователей, которые могут изменять данные. Обычно добавляют членства и роли в веб-узел, а затем устанавливают правила, которые деловой компонент может проверить перед разрешением изменений данных. Подробные сведения см. в разделах Пошаговое руководство. Создание веб-узла с членством и именами пользователей и Пошаговое руководство. Управление пользователями веб-узла с ролями.
См. также
Задачи
Пошаговое руководство. Привязка данных веб-страниц с помощью компонента данных Visual Studio
Пошаговое руководство. Использование общего кода на веб-узлах в Visual Web Developer
Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer
Основные понятия
Общие сведения об элементах управления источниками данных
Использование параметров с элементами управления источников данных