Пошаговое руководство. Привязка данных к пользовательским бизнес-объектам

Обновлен: Ноябрь 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-файла для бизнес-данных». В противном случае создайте новый веб-узел и страницу, выполнив следующие действия.

Создание файлового веб-узла

  1. Откройте Visual Web Developer.

  2. В меню Файл выберите Создать, Веб-узел.

    Откроется диалоговое окно Создать веб-узел.

  3. В группе Установленные шаблоны Visual Studio выберите Веб-узел ASP.NET.

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

    Например, введите имя папки C:\WebSites.

  5. В списке Язык выберите предпочтительный язык программирования.

  6. Нажмите кнопку ОК.

    Visual Web Developer создаст папку и новую страницу с именем Default.aspx.

Создание XML-файла для бизнес-данных

В ходе следующей процедуры будет создан простой XML-файл для данных деловых компонентов.

Создание XML-файла

  1. В обозревателе решений щелкните правой кнопкой мыши папку App_Data и выберите команду Добавитьновый элемент.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Убедитесь, что создается файл с расширением XML в папке App_Data. Папка App_Data имеет соответствующие разрешения, которые позволяют веб-странице записывать и считывать данные из XML-файла.

  2. В разделе Установленные шаблоны Visual Studio выберите XML-файл.

  3. В поле Имя введите Authors.xml.

  4. Щелкните Добавить.

    Создан новый XML-файл, содержащий директиву XML.

  5. Скопируйте приведенные ниже XML-данные и вставьте их в файл, перезаписав имеющееся в нем содержимое.

    XML-файл содержит информацию о схеме, которая идентифицирует структуру базы данных, включая ограничение для первичного ключа.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Деловые компоненты могут работать с данными любыми способами, подходящими для приложения. В пошаговом руководстве используется 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>
    
  6. Сохраните и закройте файл Authors.xml.

Создание компонентов

Далее необходимо создать класс, функционирующий как деловой компонент. Компонент будет храниться в папке App_Code веб-узла. В реальных приложениях компонент можно хранить в любом удобном хранилище, включая глобальный кэш сборок. Если веб-узел не содержит каталога с именем App_Code, то создайте ее.

Создание папки App_Code

  • В обозревателе решений щелкните правой кнопкой мыши имя веб-узла, выберите команду Добавить папку ASP.NET, а затем выберите App_Code.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Папка должна называться App_Code.

Теперь компонент можно добавить к узлу.

Создание делового компонента

  1. В обозревателе решений щелкните правой кнопкой мыши папку App_Code и выберите команду Добавление нового элемента.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Убедитесь, что создаете новый элемент в папке App_Code.

    Открывается диалоговое окно Добавление нового элемента.

  2. Под заголовком Установленные шаблоны Visual Studio выберите Класс.

  3. В списке Язык выберите предпочитаемый язык программирования.

  4. В поле Имя введите BusinessObject.

  5. Выберите Добавить.

    В Visual Web Developer будет создан новый класс файлов и откроется редактор кода.

  6. Скопируйте следующий код и вставьте его в файл, заменив уже имеющийся там код.

    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;
            }
        }
    }
    
    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Убедитесь, что значение переменной filePath ссылается на имя предварительно созданного XML-файла.

    При создании нового экземпляра класса, он читает XML-файл и передает его в набор данных. Метод класса GetAuthors возвращает набор данных.

  7. Сохраните файл. Для правильной работы в следующем разделе необходимо сохранить файл.

Отображение данных при помощи деловых компонентов

Теперь можно вызывать деловой компонент на веб-странице и отображать содержащиеся в нем данные. Для ссылки на компонент используйте элемент управления ObjectDataSource, который специально создан для работы с объектами.

Создание элемента управления ObjectDataSource, ссылающегося на компонент

  1. Переключитесь на страницу Default.aspx или откройте ее.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Если страница Default.aspx не существует, можно использовать другую страницу. Также можно добавить к веб-узлу новую страницу. В обозревателе решений щелкните правой кнопкой мыши имя веб-узла и выберите Добавление нового элемента, а затем добавьте новую Веб-форму.

  2. Перейдите в представление конструирования.

  3. Из группы Данные в Панели элементов перетащите на страницу элемент управления ObjectDataSource.

  4. В окне «Свойства» присвойте свойству AuthorsObjectDataSource значение Идентификатор.

  5. Щелкните правой кнопкой мыши элемент управления ObjectDataSource и щелкните смарт-тег, чтобы отобразить меню Задачи ObjectDataSource.

  6. В меню Задачи ObjectDataSource выберите команду Настройка источника данных.

    Появится мастер Настройки источника данных.

  7. В списке Выбрать бизнес-объект выберите PubsClasses.AuthorClass.

  8. Нажмите кнопку Далее.

  9. На вкладке Выбрать в списке Выбрать метод нажмите GetAuthors(), returns Dataset.

    Метод GetAuthors задан в предварительно созданном деловом классе. Он возвращает набор данных, в котором содержатся данные из файла Authors.xml.

  10. Нажмите кнопку Готово.

    Введенные сведения о конфигурации указывают на то, что для получения данных из компонента необходимо вызвать метод GetAuthors.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Заданное имя метода для свойства SelectMethod чувствительно к регистру, даже при программировании на Visual Basic .NET.

Теперь данные из компонента можно получать при помощи элемента управления ObjectDataSource. Теперь данные будут отображаться в элементе управления GridView на странице.

Отображение данных компонента

  1. Из папки Данные в Панели элементов перетащите на страницу элемент управления GridView.

  2. Щелкните правой кнопкой мыши элемент управления GridView и щелкните смарт-тег, если меню Общие задачи GridView не отображается.

  3. В меню Общие задачи GridView в поле Choose Data Source выберите AuthorsObjectDataSource.

  4. Чтобы запустить страницу, нажмите клавиши CTRL + F5.

    Элемент управления GridView отображается с XML-данными.

Вставка данных при помощи деловых компонентов

Так же как и другие элементы управления источниками данных, такие как элемент управления SqlDataSource, элемент управления ObjectDataSource поддерживает обновление (вставку, обновление и удаление). В данном разделе деловой компонент будет модифицироваться при помощи метода, вставляющего авторскую запись. После этого страница будет изменена так, чтобы пользователи могли вводить новые авторские данные и изменять элемент управления ObjectDataSource, чтобы производить вставку.

1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

В данной части пошагового руководства предварительно созданный файл Authors.xml будет обновляться. Необходимо, чтобы приложение имело права на запись в файл во время выполнения, в противном случае веб-страница будет выдавать ошибку при попытке обновления файла. Если файл Authors.xml создан в папке App_Data, то разрешения устанавливаются автоматически.

Изменение делового компонента для разрешения вставки

  1. Перейдите к файлу BusinessObject.

  2. Добавьте следующий метод в качестве последнего члена класса 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);
    }
    
    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Обратите внимание на имена переменных, используемых для передачи авторских данных в метод (au_id, au_lname, au_fname и au_phone). Они должны совпадать с именами столбцов, указанных в схеме предварительно созданного XML-файла.

    Новый метод берет четыре значения для вставки, которые будут вводиться на странице в качестве параметров. Метод создает новую строку в наборе данных, а затем записывает обновленный набор данных в XML-файл.

  3. Сохраните файл.

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

Добавление элемента управления для вставки данных

  1. Переключитесь на страницу Default.aspx или откройте ее.

  2. Перейдите в режим конструктора.

  3. Из группы Данные в Панели элементов перетащите на страницу элемент управления DetailsView.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Точный макет страницы не имеет значения.

  4. В меню Задачи DetailsView в поле Выбор источника данных выберите AuthorsObjectDataSource.

    1se6685s.alert_note(ru-ru,VS.90).gifПримечание.

    Если меню Задачи DetailsView не отображается, то щелкните смарт-тег.

  5. В окне «Свойства» присвойте свойству AutoGenerateInsertButton значение true.

    В результате элемент управления DetailsView отобразит кнопку Создать, которую пользователи смогут нажимать для переключения элемента управления в режим ввода данных.

В конце необходимо настроить элемент управления ObjectDataSource, то есть указать действие, которое элемент управления должен осуществлять для вставки данных.

Настройка источника данных для вставки данных

  • Щелкните правой кнопкой мыши AuthorsObjectDataSource, выберите пункт Свойства и присвойте свойству InsertMethod значение InsertAuthor.

    Это имя метода, указанное при добавлении делового компонента.

Теперь можно вставлять новые авторские данные в XML-файл.

Проверка вставки

  1. Для запуска страницы Default.aspx нажмите клавиши CTRL+F5.

  2. Нажмите кнопку Создать на элементе управления DetailsView.

    Элемент управления отобразится заново, но уже с текстовыми полями.

  3. Введите новые авторские данные и нажмите кнопку Вставить.

    Новые авторские данные добавлены в XML-файл. Новая запись сразу отобразится в элементе управления GridView.

Следующие действия

В данном руководстве было показано, как работать с компонентом данных. Возможно, потребуется поэкспериментировать с дополнительными возможностями переходов. Ниже перечислены некоторые из таких возможностей.

См. также

Задачи

Пошаговое руководство. Привязка данных веб-страниц с помощью компонента данных Visual Studio

Пошаговое руководство. Использование общего кода на веб-узлах в Visual Web Developer

Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer

Основные понятия

Общие сведения об элементах управления источниками данных

Использование параметров с элементами управления источников данных