Разработка модулей для DotNetNuke в Visual Studio 2005
Тестирование созданного модуля
После того, как все три уровня модуля разработаны, следует выбрать пункт главного меню Visual Studio Build | Build Web Site. Компиляция должна пройти без ошибок.
После компиляции следует запустить проект, и в меню DNN выбрать страницу Guest Book. Появится созданный модуль (рис. 15.34).
Использование объектных источников данных в 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).
Этот объект представляет собой обычный класс. Если необходимо иметь полный контроль над параметрами, необходимо добавить бизнес-логику. Эта функция является преимуществом объектных источников данным перед элементами управления, связанными с SQL-данными. Кроме того, это позволяет строить решения, полностью соответствующий n-уровневой архитектуре, полностью контролирующие данные на каждом из уровней.
Теперь обратите внимание на фрагмент
TypeName="YourCompany.Modules.GuestBook.GuestBookController
Он указывает на класс GuestBookController (рис. 15.36), реализующий методы выборки ( Select ), обновления ( Update ), вставки ( Insert ) и удаления ( Delete ).
Далее, обратите внимание на фрагмент 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.
Контрольные вопросы
- Опишите архитектуру модулей DNN. Из каких уровней она состоит?
- Какие функции выполняет каждый их уровней модели модулей DNN?
- В каких каталогах размещаются компоненты модуля?
- Какой инструмент оптимально использовать для создания модулей DNN?