Волгоградский государственный университет
Опубликован: 02.03.2009 | Доступ: свободный | Студентов: 1514 / 186 | Оценка: 4.20 / 4.03 | Длительность: 16:55:00
Лекция 15:

Разработка модулей для DotNetNuke в Visual Studio 2005

< Лекция 14 || Лекция 15: 123456

Тестирование созданного модуля

После того, как все три уровня модуля разработаны, следует выбрать пункт главного меню Visual Studio Build | Build Web Site. Компиляция должна пройти без ошибок.

После компиляции следует запустить проект, и в меню DNN выбрать страницу Guest Book. Появится созданный модуль (рис. 15.34).

Созданный модуль GuestBook

Рис. 15.34. Созданный модуль GuestBook

Использование объектных источников данных в DNN

Рассмотрим в качестве примера метод GuestBook_Update. Он вызывается элементом управления EditGuestBook.ascx. В этом элементе управления присутствует следующий код для связи с объектным источником данных:

<asp:ObjectDataSource ID="ObjectDataSource_Tasks" runat="server" 
  DataObjectTypeName="YourCompany.Modules.GuestBook.GuestBookInfo"
  DeleteMethod="GuestBook_Delete" InsertMethod="GuestBook_Insert" 
  OldValuesParameterFormatString="original_{0}"
  OnInit="Page_Load" SelectMethod="GuestBook_GetAll" 
  TypeName="YourCompany.Modules.GuestBook.GuestBookController"
  UpdateMethod="GuestBook_Update">
    <SelectParameters>
      <asp:Parameter DefaultValue="00" Name="ModuleId" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

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

Обратите внимание на фрагмент

DataObjectTypeName="YourCompany.Modules.GuestBook.GuestBookInfo.

В нем указывается объектный источник данных - объект GuestBookInfo, который будет использоваться для передачи параметров (рис. 15.35).

Объект GuestBookInfo

Рис. 15.35. Объект GuestBookInfo

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

Теперь обратите внимание на фрагмент

TypeName="YourCompany.Modules.GuestBook.GuestBookController

Он указывает на класс GuestBookController (рис. 15.36), реализующий методы выборки ( Select ), обновления ( Update ), вставки ( Insert ) и удаления ( Delete ).

Класс GuestBookController

Рис. 15.36. Класс GuestBookController

Далее, обратите внимание на фрагмент UpdateMethod="GuestBook_Update

Он указывает, что метод GuestBook_Update класса GuestBookController является обработчиком события Update. В GridView, когда пользователь нажимает ссылку Update, происходят следующие действия. Поскольку GridView связан с объектным источником данных, объектный источник данных передает параметры из GridView в объект GuestBookInfo и вызывает метод GuestBook_Update класса GuestBookController:

<DataObjectMethod(DataObjectMethodType.Update)> _
    Public Shared Sub GuestBook_Update(ByVal objTest As GuestBookInfo)
      DataProvider.Instance.YourCompany_GuestBook_Update(objTest.ID, objTest.Name, _
                              objTest.Email, objTest.Message, objTest.DateEntered)
    End Sub

Этот метод получает класс GuestBookInfo и передает каждый параметр уроню доступа к данным. Объект GuestBookInfo используется для каждого метода в классе GuestBookController, за исключением метода Select:

<DataObjectMethod(DataObjectMethodType.Select)> _
    Public Shared Function GuestBook_GetAll(ByVal ModuleId As Integer) As List(Of GuestBookInfo)
      Return CBO.FillCollection(Of GuestBookInfo)(DataProvider.Instance().YourCompany_GuestBook_GetAll(ModuleId))
    End Function

Этот метод получает параметр ModuleId и возвращает объект GuestBookInfo.

Контрольные вопросы

  1. Опишите архитектуру модулей DNN. Из каких уровней она состоит?
  2. Какие функции выполняет каждый их уровней модели модулей DNN?
  3. В каких каталогах размещаются компоненты модуля?
  4. Какой инструмент оптимально использовать для создания модулей DNN?
< Лекция 14 || Лекция 15: 123456