Что такое Details.aspx.designer.vb? Как я могу исправить эти ошибки?
Большинство ошибок Details.aspx.designer.vb являются результатом отсутствия или повреждения версии файла, установленного MSDN Disc 4603.01. Как правило, любую проблему, связанную с файлом VB, можно решить посредством замены файла на новую копию. Если ошибка Details.aspx.designer.vb возникла в результате его удаления по причине заражения вредоносным ПО, мы рекомендуем запустить сканирование реестра, чтобы очистить все недействительные ссылки на пути к файлам, созданные вредоносной программой.
Мы подготовили для вас несколько версий файлов Details.aspx.designer.vb, которые походят для %%os%% и нескольких выпусков Windows. Данные файлы можно посмотреть и скачать ниже. Для скачивания доступны не все версии Details.aspx.designer.vb, однако вы можете запросить необходимых файл, нажав на кнопку Request (Запрос) ниже. В нашей обширной базе представлены не все версии файлов; в этом случае вам следует обратиться к Microsoft.
Как правило, при размещении файла Details.aspx.designer.vb в надлежащем каталоге, проблемы, связанные с данным файлом, больше не возникают, однако следует выполнить проверку, чтобы убедиться в том, что проблему удалось устранить. Затем вы можете повторно открыть MSDN Disc 4603.01, чтобы проверить выводится ли сообщение об ошибке.
Создание классов модели в Entity Framework (VB)
В этом руководстве описано, как использовать ASP.NET MVC с Microsoft Entity Framework. Вы узнаете, как использовать мастер сущностей для создания модели ADO.NET entity Data Model. В ходе работы с этим руководством мы создадим веб-приложение, демонстрирующее выбор, вставку, обновление и удаление данных базы данных с помощью Entity Framework.
Цель этого руководства — объяснить, как можно создавать классы доступа к данным с помощью Microsoft Entity Framework при создании приложения ASP.NET MVC. В этом руководстве предполагается, что предыдущие знания о Microsoft Entity Framework отсутствуют. В конце этого руководства вы узнаете, как использовать Entity Framework для выбора, вставки, обновления и удаления записей базы данных.
Microsoft Entity Framework — это средство объектно-реляционного сопоставления (O/RM), которое позволяет автоматически создавать уровень доступа к данным из базы данных. Entity Framework позволяет избежать трудоемкой работы по созданию классов доступа к данным вручную.
Между ASP.NET MVC и Microsoft Entity Framework нет существенного соединения. Существует несколько альтернатив Entity Framework, которые можно использовать с ASP.NET MVC. Например, вы можете создавать классы модели MVC с помощью других средств O/RM, таких как Microsoft LINQ to SQL, NHibernate или SubSonic.
Чтобы продемонстрировать, как можно использовать Microsoft Entity Framework с ASP.NET MVC, мы создадим простой пример приложения. Мы создадим приложение Базы данных фильмов, которое позволяет отображать и редактировать записи базы данных фильмов.
В этом руководстве предполагается, что у вас есть Visual Studio 2008 или Visual Web Developer 2008 с пакетом обновления 1 (SP1). Для использования Entity Framework требуется пакет обновления 1 ( SP1). Вы можете скачать Visual Studio 2008 с пакетом обновления 1 (SP1) или Visual Web Developer с пакетом обновления 1 (SP1) по следующему адресу:
Создание примера базы данных movie
Приложение Movie Database использует таблицу базы данных с именем Movies, содержащую следующие столбцы:
| Имя столбца | Тип данных | Разрешить значения NULL? | Первичный ключ? |
|---|---|---|---|
| Идентификатор | INT | False | True |
| Заголовок | nvarchar(100) | Неверно | Неверно |
| Директор | nvarchar(100) | Неверно | Неверно |
Эту таблицу можно добавить в проект ASP.NET MVC, выполнив следующие действия.
- Щелкните правой кнопкой мыши папку App_Data в окне Обозреватель решений и выберите пункт меню Добавить, Новый элемент.
- В диалоговом окне Добавление нового элемента выберите SQL Server База данных, присвойте базе данных имя MoviesDB.mdf и нажмите кнопку Добавить.
- Дважды щелкните файл MoviesDB.mdf, чтобы открыть окно Обозреватель сервера или база данных Обозреватель.
- Разверните подключение к базе данных MoviesDB.mdf, щелкните правой кнопкой мыши папку Таблицы и выберите пункт меню Добавить новую таблицу.
- В Designer таблицы добавьте столбцы Id, Title и Director.
- Нажмите кнопку Сохранить (значок дискеты), чтобы сохранить новую таблицу с именем Фильмы.
После создания таблицы базы данных Movies в нее следует добавить некоторые примеры данных. Щелкните правой кнопкой мыши таблицу Movies и выберите пункт меню Показать данные таблицы. В появиющуюся сетку можно ввести данные о поддельных фильмах.
Создание модели данных сущностей ADO.NET
Чтобы использовать Entity Framework, необходимо создать модель данных сущности. Вы можете воспользоваться преимуществами мастера моделей entity data в Visual Studio для автоматического создания модели entity data из базы данных.
Выполните следующие действия.
- Щелкните правой кнопкой мыши папку Models в окне Обозреватель решений и выберите пункт меню Добавить, Новый элемент.
- В диалоговом окне Добавление нового элемента выберите категорию Данные (см. рис. 1).
- Выберите шаблон ADO.NET Entity Data Model , присвойте ей имя MoviesDBModel.edmx и нажмите кнопку Добавить . При нажатии кнопки Добавить запустится мастер модели данных.
- На шаге Выбор содержимого модели выберите параметр Создать из базы данных и нажмите кнопку Далее (см. рис. 2).
- На шаге Выбор подключения к данным выберите подключение к базе данных MoviesDB.mdf, введите имя параметров подключения сущностей MoviesDBEntities и нажмите кнопку Далее (см. рис. 3).
- На шаге Выбор объектов базы данных выберите таблицу базы данных Movie и нажмите кнопку Готово (см. рис. 4).
После выполнения этих действий откроется Designer ADO.NET Entity Data Model (Entity Designer).
Рис. 1. Создание новой модели данных сущности

Рис. 2. Выбор этапа содержимого модели

Рис. 3. Выбор подключения к данным

Рис. 4. Выбор объектов базы данных

Изменение модели данных сущностей ADO.NET
После создания модели данных сущности можно изменить модель, воспользовавшись Designer сущностей (см. рис. 5). Вы можете в любое время открыть Designer сущностей, дважды щелкнув файл MoviesDBModel.edmx в папке Models в окне Обозреватель решений.
Рис. 5. Designer модель данных сущностей ADO.NET

Например, можно использовать Designer сущностей для изменения имен классов, создаваемых мастером данных модели сущностей. Мастер создал новый класс доступа к данным с именем Movies. Другими словами, мастер присвоил классу то же имя, что и таблица базы данных. Так как мы будем использовать этот класс для представления конкретного экземпляра Movie, следует переименовать класс с Movies на Movie.
Если вы хотите переименовать класс сущности, можно дважды щелкнуть имя класса в Designer сущностей и ввести новое имя (см. рис. 6). Кроме того, можно изменить имя сущности в окно свойств после выбора сущности в Designer сущностей.
Рис. 6. Изменение имени сущности

Не забудьте сохранить модель entity Data Model после внесения изменений, нажав кнопку Сохранить (значок дискеты). В фоновом режиме Designer сущностей создает набор классов Visual Basic .NET. Эти классы можно просмотреть, открыв MoviesDBModel. файл Designer.vb из окна Обозреватель решений.
Не изменяйте код в файле Designer.vb, так как изменения будут перезаписаны при следующем использовании Designer сущностей. Если вы хотите расширить функциональные возможности классов сущностей, определенных в файле Designer.vb, можно создать разделяемые классы в отдельных файлах.
Выбор записей базы данных с помощью Entity Framework
Давайте приступим к созданию приложения базы данных фильмов, создав страницу со списком записей фильмов. Контроллер Home в листинге 1 предоставляет действие с именем Index(). Действие Index() возвращает все записи фильмов из таблицы базы данных Movie, используя entity Framework.
Листинг 1. Controllers\HomeController.vb
_ Public Class HomeController Inherits System.Web.Mvc.Controller Private _db As MoviesDBEntities Public Sub New() _db = New MoviesDBEntities() End Sub Public Function Index() ViewData.Model = _db.MovieSet.ToList() Return View() End Function End Class
Обратите внимание, что контроллер в листинге 1 содержит конструктор. Конструктор инициализирует поле уровня класса с именем _db. Поле _db представляет сущности базы данных, созданные Платформой Microsoft Entity Framework. Поле _db является экземпляром класса MoviesDBEntities, созданного Designer Сущности.
Поле _db используется в действии Index() для получения записей из таблицы базы данных Movies. Выражение _db. MovieSet представляет все записи из таблицы базы данных Movies. Метод ToList() используется для преобразования набора фильмов в универсальную коллекцию объектов Movie: List( Of Movie).
Записи фильмов извлекаются с помощью LINQ to Entities. Действие Index() в листинге 1 использует синтаксис метода LINQ для получения набора записей базы данных. При желании можно использовать синтаксис запросов LINQ. Следующие два оператора выполняют то же самое:
ViewData.Model = _db.MovieSet.ToList() ViewData.Model = (from m in _db.MovieSet select m).ToList()
Используйте любой синтаксис LINQ (синтаксис методов или синтаксис запросов), который вы найдете наиболее интуитивно понятным. Между этими двумя подходами нет никакой разницы в производительности. Разница заключается только в стиле.
Представление в листинге 2 используется для отображения записей фильмов.
Листинг 2. Views\Home\Index.aspx
Index Title:
Director:
<%=Html.ActionLink("Edit", "Edit", New With <.id = m.Id>)%> <%=Html.ActionLink("Delete", "Delete", New With <.id = m.Id>)%>
Представление в листинге 2 содержит цикл For Each , который выполняет итерацию по каждой записи фильма и отображает значения свойств Title и Director записи фильма. Обратите внимание, что рядом с каждой записью отображается ссылка Изменить и удалить. Кроме того, в нижней части представления появится ссылка Добавить фильм (см. рис. 7).
Рис. 7. Представление индекса

Представление индекса — это типизированное представление. Представление индекса имеет директиву , которая включает атрибут Inherits. Атрибут Inherits приводит свойство ViewData.Model к строго типизированной универсальной коллекции List объектов Movie — List(Of Movie).
Вставка записей базы данных с помощью Entity Framework
Платформа Entity Framework позволяет легко вставлять новые записи в таблицу базы данных. В листинге 3 содержатся два новых действия, добавленных в класс контроллера Home, которые можно использовать для вставки новых записей в таблицу базы данных Movie.
Листинг 3. Controllers\HomeController.vb (добавление методов)
_ Public Class HomeController Inherits System.Web.Mvc.Controller Public Function Add() Return View() End Function _ Public Function Add(ByVal form As FormCollection) Dim movieToAdd As New Movie() ' Deserialize (Include white list!) TryUpdateModel(movieToAdd, New String() , form.ToValueProvider()) ' Validate If String.IsNullOrEmpty(movieToAdd.Title) Then ModelState.AddModelError("Title", "Title is required!") End If If String.IsNullOrEmpty(movieToAdd.Director) Then ModelState.AddModelError("Director", "Director is required!") End If ' If valid, save movie to database If (ModelState.IsValid) Then _db.AddToMovieSet(movieToAdd) _db.SaveChanges() Return RedirectToAction("Index") End If ' Otherwise, reshow form Return View(movieToAdd) End Function End Class
Первое действие Add() просто возвращает представление. Представление содержит форму для добавления новой записи базы данных фильмов (см. рис. 8). При отправке формы вызывается второе действие Add().
Обратите внимание, что второе действие Add() украшено атрибутом AcceptVerbs. Это действие можно вызвать только при выполнении операции HTTP POST. Другими словами, это действие можно вызвать только при публикации HTML-формы.
Второе действие Add() создает новый экземпляр класса Entity Framework Movie с помощью метода TryUpdateModel() ASP.NET MVC. Метод TryUpdateModel() принимает поля в FormCollection, переданном методу Add(), и присваивает значения этих полей формы HTML классу Movie.
При использовании Entity Framework необходимо предоставить «список безопасных» свойств при использовании методов TryUpdateModel или UpdateModel для обновления свойств класса сущности.
Затем действие Add() выполняет простую проверку формы. Действие проверяет, имеют ли свойства Title и Director значения. При возникновении ошибки проверки в ModelState добавляется сообщение об ошибке проверки.
Если ошибок проверки нет, новая запись фильма добавляется в таблицу базы данных Movies с помощью Entity Framework. Новая запись добавляется в базу данных со следующими двумя строками кода:
_db.AddToMovieSet(movieToAdd) _db.SaveChanges()
В первой строке кода новая сущность Movie добавляется в набор фильмов, отслеживаемых Entity Framework. Вторая строка кода сохраняет все изменения, внесенные в отслеживаемые фильмы, в базовую базу данных.
Рис. 8. Представление «Добавить»

Обновление записей базы данных с помощью Entity Framework
При редактировании записи базы данных с помощью Entity Framework можно следовать практически тому же подходу, который мы только что следовали для вставки новой записи базы данных. В листинге 4 содержатся два новых действия контроллера с именем Edit(). Первое действие Edit() возвращает HTML-форму для редактирования записи фильма. Второе действие Edit() пытается обновить базу данных.
Листинг 4. Controllers\HomeController.vb (edit methods)
_ Public Class HomeController Inherits System.Web.Mvc.Controller Public Function Edit(ByVal id As Integer) ' Get movie to update Dim movieToUpdate As Movie = _db.MovieSet.First(Function(m) m.Id = id) ViewData.Model = movieToUpdate Return View() End Function _ Public Function Edit(ByVal form As FormCollection) ' Get movie to update Dim id As Integer = Integer.Parse(form("id")) Dim movieToUpdate As Movie = _db.MovieSet.First(Function(m) m.Id = id) ' Deserialize (Include white list!) TryUpdateModel(movieToUpdate, New String() , form.ToValueProvider) ' Validate If String.IsNullOrEmpty(movieToUpdate.Title) Then ModelState.AddModelError("Title", "Title is required!") End If If String.IsNullOrEmpty(movieToUpdate.Director) Then ModelState.AddModelError("Director", "Director is required!") End If ' If valid, save movie to database If (ModelState.IsValid) Then _db.SaveChanges() Return RedirectToAction("Index") End If ' Otherwise, reshow form Return View(movieToUpdate) End Function End Class
Второе действие Edit() начинается с получения записи фильма из базы данных, которая соответствует идентификатору редактируемого фильма. Следующая инструкция LINQ to Entities захватывает первую запись базы данных, соответствующую определенному идентификатору:
Dim movieToUpdate As Movie = _db.MovieSet.First(Function(m) m.Id = id)
Затем метод TryUpdateModel() используется для назначения значений полей HTML-формы свойствам сущности movie. Обратите внимание, что предоставляется список надежных данных, указывающий точные свойства для обновления.
Затем выполняется простая проверка, чтобы убедиться, что свойства Movie Title и Director имеют значения. Если ни одно из свойств не имеет значения, в ModelState добавляется сообщение об ошибке проверки, а ModelState.IsValid возвращает значение false.
Наконец, если ошибок проверки нет, то базовая таблица базы данных Movies обновляется с учетом любых изменений путем вызова метода SaveChanges().
При редактировании записей базы данных необходимо передать идентификатор редактируемой записи в действие контроллера, выполняющего обновление базы данных. В противном случае действие контроллера не будет знать, какую запись следует обновить в базовой базе данных. Представление «Изменить», содержащееся в листинге 5, содержит скрытое поле формы, представляющее идентификатор редактируемой записи базы данных.
Листинг 5. Views\Home\Edit.aspx
Edit .input-validation-error Edit Movie
Удаление записей базы данных с помощью Entity Framework
Последняя операция базы данных, которую необходимо решить в этом руководстве, — удаление записей базы данных. Для удаления определенной записи базы данных можно использовать действие контроллера, описанное в листинге 6.
Листинг 6 — \Controllers\HomeController.vb (действие удаления)
_ Public Class HomeController Inherits System.Web.Mvc.Controller Public Function Delete(ByVal id As Integer) ' Get movie to delete Dim movieToDelete As Movie = _db.MovieSet.First(Function(m) m.Id = id) ' Delete _db.DeleteObject(movieToDelete) _db.SaveChanges() ' Show Index view Return RedirectToAction("Index") End Function End Class
Действие Delete() сначала извлекает сущность Movie, которая соответствует идентификатору, переданного действию. Затем фильм удаляется из базы данных путем вызова метода DeleteObject(), за которым следует метод SaveChanges(). Наконец, пользователь перенаправляется обратно в представление индекса.
Итоги
Цель этого руководства — продемонстрировать, как можно создавать веб-приложения на основе базы данных, используя преимущества ASP.NET MVC и Microsoft Entity Framework. Вы узнали, как создать приложение, которое позволяет выбирать, вставлять, обновлять и удалять записи базы данных.
Во-первых, мы рассмотрели, как можно использовать мастер моделей entity data для создания модели entity data из Visual Studio. Далее вы узнаете, как использовать LINQ to Entities для получения набора записей базы данных из таблицы базы данных. Наконец, мы использовали Entity Framework для вставки, обновления и удаления записей базы данных.
What is the difference between the designer.vb page and .vb page?
I am new to framework 3.5. I noticed that when creating a web content form, it creates a aspx.designer.vb page in addition to the aspx.vb page. Can anyone explain the difference to me and the purpose of each?
asked Dec 23, 2015 at 14:17
WedgeBuster53 WedgeBuster53
88 1 1 silver badge 9 9 bronze badges
The one with designer in the name belongs to the IDE (the designer); it’s used to store design-time information (autogenerated code, initialization for components you drag and drop at designtime, etc.). A little common sense should have been able to figure this out, new or not. 🙁
Dec 23, 2015 at 15:04
@KenWhite: A little common sense should have been able to figure this out, new or not. — That’s not for certain. Aren’t you being a little harsh? Someone that has never programmed before would probably not know. Certainly one could tell that there’s a difference when looking at the names and the code, but the OP also asked what the purpose of it was.
Dec 23, 2015 at 15:37
2 Answers 2
Can anyone explain the difference to me and the purpose of each?
Is the designer related autogenerated code by the framework and it contains necessary code for the controls you have placed in your form in designer surface. If you want you can make changes to your controls look and feel using the desinger property window (or) even using this designer file.
aspx.vb is the file where the actual server side code block is present. Like your controls event handler methods etc.
consider going through the MSDN documentation for getting a better understanding on the same.
Часть 1. Создание первого Web-приложения
С появлением предыдущей версии Visual Basic 5.0 разработчики впервые получили возможность использования VB для Internet-программирования. О некоторых из этих функций мы уже писали ранее в КомпьютерПресс. В первую очередь нужно отметить средства создания элементов управления ActiveX (КомпьютерПресс № 6’97, с.183), а также появление компонентов WinSock и Internet Transfer, что обеспечивало передачу и управление данными в Сети. Пользователь получил также возможность создавать документы ActiveX (см. КомпьютерПресс № 3’98, с. 177 и № 8’98, с.139). Отдельно следует упомянуть о входящем в состав Microsoft Internet Explorer 4.x элементе управления WebBrowser, который позволяет работать с Web-страницами непосредственно на VB-форме (см. статью «Просмотр документов с помощью WebBrowser» в этом номере).
VB5 также включал API-интерфейс для Active Server Pages (ASP), однако его применение для создания расширений для сервера Microsoft Internet Information Server (IIS) 3.0 было под силу далеко не каждому программисту. И поскольку большинство разработчиков использовали ASP-технологию лишь для написания сценариев для сервера, значительная часть ее потенциала была невостребована.
В VB6 был сделан серьезный шаг по расширению возможностей программирования для Internet (табл. 1), среди которых следует особо отметить появление двух новых типов проектов: IIS Application (в документации и литературе в качестве синонима часто используется название WebClass Application) и DHTML Application. Первый из них обеспечивает обработку данных на сервере, второй — на клиенте, в среде браузера (табл. 2). В распоряжении программистов появился необходимый набор средств разработки Web-приложений в среде VB.
Создание активных Web-приложений в VB основано на идее использования некоторых HTML-шаблонов, которые затем дополняются программным кодом. Таким образом решается важная задача разделения труда между Web-дизайнером и VB-разработчиком, каждый из которых может заниматься своим делом. Именно этот момент мы постараемся отразить в приведенном далее примере.
1. Приложения IIS (WebClass) и DHTML
IIS-приложение — это VB-программа, использующая комбинацию HTML- и VB-кода для генерации активных динамических Web-страниц (ASP), работающих в среде браузера. Само IIS-приложение функционирует в среде Web-сервера, где оно получает запросы от браузера, запускает соответствующий программный код для их обработки (в том числе с обращением к базам данных) и возвращает ответную информацию в браузер (например, меняя не только содержимое, но и структуру HTML-страницы). Таким образом, программный код VB может быть альтернативным вариантом использования скриптов, CGI-обработки и других методов Internet-программирования.
IIS-приложение представляет собой объект, называемый WebClass и содержащий, в свою очередь, несколько элементов WebItem, которые могут быть двух типов: HTML-шаблоны и Custom WebItem. Первые фактически являются HTML-страницами с обозначением специальных полей, содержимое которых может динамически меняться. Вторые включают программируемые блоки обработки внешних запросов.
Принципиальное отличие IIS- и ASP-приложений (кроме того, что первое пишется на VB, а второе — на скриптовых языках типа VBScript или JScript) заключается в том, что в ASP-приложениях комбинация кода и HTML находится на одной странице, а в IIS-приложении пользовательский интерфейс (HTML- или ASP-страницы) физически отделен от программного кода. Такое разделение упрощает отладку приложения и обеспечивает возможность создания повторно используемых программных компонентов.
В отличие от традиционных VB-приложений IIS-приложения в качестве диалогового интерфейса применяют не формы, а HTML-страницы (табл. 3). Как и VB-приложения, IIS-приложения содержат модули кода и визуальные компоненты, которые хранятся в виде текстовых файлов с расширением DSR. Для файлов двоичного варианта приложения используется расширение DSX.
В целом законченное IIS-приложение (его структура приведена на рис. 1) состоит из следующих элементов:
- одного или нескольких объектов WebClass;
- одного или нескольких HTML-шаблонов;
- одного или нескольких элементов Сustom WebItems;
- ASP-файла, используемого для передачи информации от WebClass в IIS (каждому WebClass соответствует свой ASP-файл);
- модуль времени выполнения MSWCRUN.DLL;
- проект, содержащий все компоненты кода в виде DLL-библиотеки, создаваемой при компиляции.
DHTML-приложения представляют собой комбинацию динамических HTML-страниц и откомпилированного VB-кода. Они служат примером использования расширенной DHTML-технологии, реализованной в IE начиная с версии 4.0 и предназначенной для создания интерактивных Web-страниц. DHTML-приложения выполняются непосредственно на компьютере клиента. При создании DHTML-приложений можно писать VB-код обычным образом, а также использовать специальный конструктор в среде VB для создания Web-страниц.
В составе VB6 имеется несколько примеров с демонстрацией работы IIS- и DHTML-приложений (DhShowMe, PropBag и WCdemo), которые находятся на компакт-диске MSDN Library или на жестком диске в подкаталоге \MSDN98\98VS\1033\SAMPLE\V98.
2. Создание первого проекта WebClass
Хотя технология разработки приложения для Web в среде VB6 является достаточно простой, на начальном этапе освоения она может несколько напугать программиста. Ведь объектные модели IIS/ASP/WebClass обладают невероятным количеством возможностей, и вряд ли найдется человек, который был бы знаком с ними в полной мере. Тем не менее не стоит волноваться — нужно только ознакомиться с основами Internet-разработки, а затем вы сможете приступить к созданию реальных приложений, шаг за шагом осваивая документацию.
Вначале необходимо ознакомиться с HTML-шаблонами и событиями, научиться создавать HTML-код «на лету», заменять элементы языка (тэги), а также управлять данными, отправленными клиентом. Об этом мы и постараемся рассказать в данной статье, а для начала выполним совсем простой пример.
Внимание. Для создания и работы с WebClass на компьютере должны находиться IIS (для Windows NT) или Personal Web Server (для Windows 9x). Для установки PWS (персональный Web-сервер, который иногда называется Peer Web Services, — аналог IIS при работе в среде Windows 9x) используйте диск Setup VB6. В стартовом окне укажите опцию Server Application and Tools и нажмите кнопку Next. В следующем окне отметьте позицию NT Option Pack (для Windows 9x) и щелкните кнопку Install. По запросу программы установите второй диск Setup. Далее укажите вариант записываемой конфигурации PWS (рекомендуем для первого раза Typical). После окончания загрузки в меню Windows появится новая группа MS Personal Web Server.
Одним из компонентов проекта WebClass являются HTML-шаблоны, которые, в принципе, представляют собой обычные HTML-файлы. Обычно они создаются вне интегрированной среды разработки VB, но после их импорта в проект вы получаете возможность редактировать их внутри VB IDE с помощью любого привычного вам редактора, например Notepad или FrontPage. Для этого выберите команду Options из меню Tools, перейдите во вкладку Advanced и введите путь к нужному вам редактору в поле ввода External HTML Editor. (Мы выбрали Notepad.)
Первый шаг, с которого начинается разработка приложения, — это создание проекта WebClass. Запустите VB и в окне New Project выберите элемент IIS Application (рис. 2).
После загрузки проекта переименуйте его из Project1 в WCSimple. Затем дважды щелкните папку Designers в окне Project. Раскроется дерево проекта, и вы увидите модуль WebClass1. Дважды щелкните его, и на экране появится Конструктор.
Переименуйте модуль в WClass1.Dsr (рис. 3). Сохраните проект на жестком диске с именем Simple.vbp (это обязательное условие для дальнейшей работы над проектом).
Конструктор WebClass состоит из двух панелей. В левой части показаны элементы модуля — HTML Template WebItems и Custom WebItems, а справа — соответствующие им элементы языка HTML (рис. 4).
Следующим шагом разработки приложения является импорт HTML-шаблонов. Для нашего примера создадим в редакторе Notepad следующий простой шаблон с именем Simple.htm, состоящий всего из одной строки:
Привет всем!
Теперь импортируем шаблон в конструктор. Для этого либо щелкните правой кнопкой мыши дерево на левой панели Конструктора, а затем выберите Add HTML Template, либо щелкните кнопку со значком IE Globe на панели инструментов (рис. 4). В появившемся окне откройте файл Simple.htm. В результате наш модуль WebClass1 приобретает такой вид, который показан на рис. 5.
Замечание. Обратите внимание, что текст содержимого Simple.htm в поле HTML Context Конструктора выдается в кодировке, которая установлена в вашем текущем браузере по умолчанию. У нас там стоит КОИ8-Р, поэтому сейчас мы видим русский текст в окне Конструктора в искаженном виде.
При импорте шаблона Конструктор создает его копию, чтобы защитить исходный файл. Для нашего проекта фактически используемый файл носит имя Simple1.htm. Данный момент является существенным, если вы вдруг захотите отредактировать исходный шаблон вне среды Конструктора. Если вы будете исправлять шаблон в среде Конструктора (кнопка Edit HTML Template), то обратите внимание, что вы работаете с файлом Simple1.htm.
Теперь нужно сформировать код события WebClass_Start, которое активизируется при запросе пользователем URL-адреса. Событие WebClass_Start является аналогом события Form_Load в традиционном VB-приложении. Объект WebClass также имеет и другие события, включая Initialize и Terminate, аналогичные обычным событиям в VB.
Откроем окно кода (например, дважды щелкнув значок WebClass1 в окне Конструктора). При первом обращении к WebClass_Start туда автоматически запишется некоторый код (см. врезку «Используемый по умолчанию код запуска события»). Однако в нашем приложении Simple.vbp требуется написать только одну строку кода:
Private Sub WebClass_Start() Template1.WriteTemplate End Sub
Метод WriteTemplate направляет указанный шаблон в браузер. Теперь запустим созданное приложение на выполнение. При первом запуске VB попросит установить свойства проекта (рис. 6), а затем указать имя виртуального корневого каталога (рис. 7) для PWS. В обоих случаях не будем изменять параметры, предложенные по умолчанию, и нажмем OK. Далее после нескольких секунд размышления компьютера (при последующих запусках все будет выполняться достаточно быстро) мы увидим результат — IE покажет созданную нами ASP-страницу (рис. 8). Обратите внимание на адрес созданной страницы, которая находится во временном виртуальном каталоге персонального Web-сервера.
Выйдите из браузера и остановите выполнение приложения — именно таков порядок закрытия WebClass-приложения в процессе разработки или отладки. Поздравляем! Вы создали первое IIS-приложение на VB.
3. Серьезный проект для регистрации пользователей через Web
Сейчас мы попробуем создать более полезное WebClass-приложение, предназначенное для довольно часто встречающейся задачи регистрации пользователей через Web. Здесь наша программа будет не только создавать ASP-страницы, но и записывать данные в базу данных Access. Для этого в VB6 должны быть установлены следующие компоненты (входящие в состав типичной установки): Access ODBC Driver (Workstation Tools) и Data Access Components 2.0 (Server Tools).
3.1. Создание начального проекта
Повторите для нового приложения то, что мы уже выполняли в предыдущем примере. Запустите новую сессию VB6 и выберите IIS Application в окне New Project. После загрузки проекта переименуйте его из Project1 в SimpleR. Раскройте папку Designers, щелкните элемент WebClass1 для вывода на экран Конструктора. Опять зайдите в окно Properties и установите WebClass1 как wcSimple, а свойство NameInURL — как SimpleR. Теперь сохраните проект на жестком диске с именем SimpleR.vbp. (рис. 9).
Для разработки приложения мы используем HTML-шаблон с именем SimpleR.htm, содержимое которого приведено в листинге 1. Этот файл был создан в Visual InterDev, но вы можете подготовить его в любом другом редакторе, в частности Notepad. Добавьте этот шаблон к проекту и назовите появившийся новый элемент WebItem как tplSimple. Дважды щелкните его, в появившемся окне кода найдите подпрограмму WebClass_Start и замените содержащийся там текст на следующий код, который выводит шаблон при загрузке приложения:
Private Sub WebClass_Start() ‘ Выводит исходный HTML-шаблон tplSimple.WriteTemplate End Sub
Запустите проект на выполнение, и вы увидите, что браузер выводит ASP-страницу, которая в данном случае является точной копией исходного HTML-шаблона (рис. 10). Выйдите из браузера и остановите выполнение приложения.
В Конструкторе WebClass щелкните правой кнопкой мыши элемент tplSimple и выберите команду Edit HTML Template из контекстного меню. Тогда вы увидите свой шаблон в редакторе HTML-кода, который вы установили по умолчанию в среде. Еще раз обратите внимание, что вы имеете сейчас дело не с исходным файлом шаблона, а с его копией SimpleR1.htm. Внимательно приглядевшись, вы обнаружите, что шаблон страницы включает три элемента, имеющих такой вид:
Title .Name
Префикс WC@ указывает не то, что поля этих элементов могут заменяться во время выполнения программы на код, содержащийся в WebClass. Для этого мы будем использовать метод WriteTemplate, который вызывает специальную процедуру ProcessTag, как только в HTML-шаблоне встретится подобный элемент. Вернемся в среду VB и дважды щелкнем элемент tplSimple для вывода окна Code.
Введите в процедуру WebClass_Start (в самом начале, перед строкой tplSimple.WriteTemplate — см. листинг 1) еще одну строчку кода:
Session(“Title”) = “Введите свою “ &_ “информацию для регистрации:”
Далее в окне кода в левом верхнем списке выберите элемент tplSimple, а в правом верхнем списке — ProcessTag. В появившейся процедуре tplSimple_ProcessTag введите следующий текст:
Select Case TagName Case “WC@TAGTITLE” TagContents = Session(“Title”) Case “WC@TAGEMAIL” TagContents = “Email:
” & _ “
” Case “WC@TAGNAME” TagContents = “Имя:
” & _ “
” End Select
Обратная передача HTML-кода с помощью параметра TagContents осуществляет замену элементов. Установите контрольную точку (breakpoint) в строке tplSimple.WriteTemplate подпрограммы WebClass_Start и запустите приложение на выполнение. После остановки программы в контрольной точке с помощью клавиши F8 проследите шаг за шагом порядок выполнения событий. Вы увидите, что подпрограмма tplSimple_ProcessTag вызывается три раза — поочередно для каждого из трех элементов в шаблоне. Особенно интересно здесь то, что данная процедура заменяет элементы Email и Name на HTML-код, который создает поля ввода в браузере (рис. 11).
Возможность интерактивно отлаживать код события для сервера является одной из наиболее мощных возможностей разработки WebClass-приложений, включенных в VB6. При Web-разработке в VB5 нельзя интерактивно отлаживать код на VBScript в ASP-приложениях — создание пробных версий и исправление ошибок было, к сожалению, единственным способом проведения отладки.
3.2. Установление связи с событием
Следующий этап в разработке нашего приложения — написание кода, который обрабатывает событие для кнопки «Зарегистрироваться», расположенной на форме. Для этого в Конструкторе WebClass щелкните элемент tplSimple на левой панели. Тогда справа вы увидите список HTML-элементов страницы, к которым можно подключить события. Щелкните правой кнопкой мыши элемент Form1 и выберите команду Connect to Custom Event из контекстного меню (рис. 12). Присвойте добавленному событию имя RegisterMe и обратите внимание на то, что имя события в столбце Target, расположенном рядом со столбцом Form1, также изменилось (рис. 13). Теперь перейдем в HTML-шаблон и убедимся, что элемент FORM принял следующий вид:
SimpleR.asp — это специальная ASP-программа, о которой мы расскажем ниже. Значения, идущие после знака вопроса, обозначают следующее: элемент WebClass (WebClass Item — WCI) равен tplSimple; событие WebClass (WebClass Event — WCE) равно RegisterMe; а адрес WebClass URLData (WCU) пуст.
Когда пользователь щелкает кнопку «Зарегистрироваться» в браузере, эта строка кода запускает событие tplSimple_RegisterMe в ActiveX DLL-библиотеке на сервере. В данном случае работа формы связана с событием на сервере, однако вы можете установить в браузере любую гиперссылку, которая будет запускать нужное событие на сервере. Таким образом, использование WebClass вносит еще одно новшество в разработку Web-приложений — событийно-управляемый стиль программирования VB распространяется и на приложения, основанные на использовании браузера.
Дважды щелкните событие RegisterMe на левой панели Конструктора WebClass, чтобы перейти в окно кода. Для нашего события введите следующий текст:
If Len(Request.Form(“Email”)) = 0 Then Session(“Title”) = “Пожалуйста, введите “ & _ “свой Email-адрес!” Session(“Email”) = “” Session(“Name”) = “” Else Session(“Title”) = “Вот, что Вы ввели:” Session(“Email”) = Request.Form(“Email”) Session(“Name”) = Request.Form(“Name”) End If tplSimple.WriteTemplate
Request.Form представляет собой стандартный способ возвращения введенных в форме данных из страницы в браузере. При этом устанавливается несколько переменных Session и повторно выводится тот же самый HTML-шаблон. Установите контрольную точку на операторе If и запустите проект.
Введите электронный адрес и имя, а затем щелкните кнопку «Зарегистрироваться». Вы увидите, что поле Title обновится, но поля ввода станут пустыми, так как пока в нашем программном коде им не присваивается никакого значения. Остановите выполнение проекта и откорректируйте tplSimple_ProcessTag в соответствии с кодом, приведенным в листинге 2. Для этого нужно добавить две строки, которые присваивают полям ввода значения (переменная Value), соответствующие переменным Session:
“ value=’” & Session(“Email”) & “‘“ & _ и “ value=’” & Session(“Name”) & “‘“ & _
Снова запустите проект и удостоверьтесь, что теперь все будет работать как надо (рис. 14).
3.3. Доступ к базе данных с помощью объектов ADO
И наконец, последний этап разработки — включение в состав проекта возможности хранить и получать записи из базы данных. Для этого создадим базу данных Microsoft Access 7.0 в том же каталоге, где находится наше приложение, и назовем ее Register.mdb. Для этого можно воспользоваться встроенным средством VB — Visual Data Manager (VisData), которое запускается из меню Add-Ins. (Мы подробно описывали работу в VisData в статье «Создание персональной адресной книги на VB 5.0» в КомпьютерПресс № 7’98, с. 187.) Добавим таблицу с двумя полями — Email и Name — и сохраним ее как Users. Щелкнем OK, когда Access предложит нам создать уникальное поле индекса. Чтобы сейчас не заниматься настройкой путей файлов, запишем Register.mdb в корневой каталог на диске C.
В среде VB добавьте ссылку к библиотеке Microsoft ActiveX Data Objects Library: с помощью команды Project|References отметьте библиотеку ADO Library 1.5 или 2.0. В случае если последняя не установлена на вашем компьютере, загрузите установочный комплект MDAC 2.0 с Web-узла Microsoft по адресу: http://www.microsoft.com/data/ado. Теперь откорректируйте подпрограмму tplSimple_RegisterMe в соответствии с кодом, приведенным в листинге 3.
Новая процедура tplSimple_RegisterMe сохраняет данные из формы в переменных Session, затем открывает набор записей ADO и ищет Email-адрес. Если адрес найден, подпрограмма возвращает найденную запись из базы данных с сообщением о дубликатном адресе. Если адрес не найден, информация о пользователе заносится в базу данных. Следующая строка кода определяет имя файла базы данных и указывает тип связи с ADO:
Connect = “DBQ=c:\register.mdb;” & _ “Driver=”
Установите контрольную точку в подпрограмме tplSimple_RegisterMe, запустите проект и понаблюдайте, как работает код доступа к данным. Помните, однако, что любое «настоящее» приложение, которое вы собираетесь создавать, должно включать обработку ошибок. Кроме того, вам необходимо обеспечить обновление существующих записей и удаление ненужных данных.
После компиляции проекта происходят две вещи. Во-первых, созданная библиотека ActiveX DLL регистрируется на той машине, где она разрабатывалась, — аналогично тому, как это бывает с любым ActiveX-проектом в VB. Во-вторых, создается специальный ASP-файл запуска, где указано имя проекта в свойстве NameInURL для WebClass. В нашем примере этот файл называется SimpleR.asp. Взгляните на текст этой программы в каком-либо из редакторов, например в Notepad. Когда пользователь вводит в браузере URL-адрес файла SimpleReg.asp, IIS-сервер выполняет программу и создает экземпляр SimpleR.wcSimple. Здесь необходимо обратить ваше внимание на то, что Microsoft не рекомендует тем или иным образом изменять такой ASP-код.
4. Последнее напутствие.
Надеемся, что вам удалось создать некоторую базу для разработки своих собственных WebClass-приложений. Однако мы советуем не спешить с преобразованием уже существующих Web-приложений в WebClass-проекты. Подобная работа требует значительных затрат времени и имеет смысл только в тех случаях, когда такой переход действительно оправдан. Лучше используйте WebClass для создания новых приложений или при серьезной модификации уже существующих проектов.
Несомненно, VB5 можно было использовать для разработки Web-приложений, но там приходилось прибегать к огромному множеству программных трюков, чтобы ASP-сценарии взаимодействовали с DLL-библиотеками надлежащим образом. С появлением VB6 отшли в прошлое ограничения в VBScript и отсутствие подлинной событийно-управляемой среды программирования.
- ПК и комплектующие
- Настольные ПК и моноблоки
- Портативные ПК
- Серверы
- Материнские платы
- Корпуса
- Блоки питания
- Оперативная память
- Процессоры
- Графические адаптеры
- Жесткие диски и SSD
- Оптические приводы и носители
- Звуковые карты
- ТВ-тюнеры
- Контроллеры
- Системы охлаждения ПК
- Моддинг
- Аксессуары для ноутбуков
- Принтеры, сканеры, МФУ
- Мониторы и проекторы
- Устройства ввода
- Внешние накопители
- Акустические системы, гарнитуры, наушники
- ИБП
- Веб-камеры
- KVM-оборудование
- Сетевые медиаплееры
- HTPC и мини-компьютеры
- ТВ и системы домашнего кинотеатра
- Технология DLNA
- Средства управления домашней техникой
- Планшеты
- Смартфоны
- Портативные накопители
- Электронные ридеры
- Портативные медиаплееры
- GPS-навигаторы и трекеры
- Носимые гаджеты
- Автомобильные информационно-развлекательные системы
- Зарядные устройства
- Аксессуары для мобильных устройств
- Цифровые фотоаппараты и оптика
- Видеокамеры
- Фотоаксессуары
- Обработка фотографий
- Монтаж видео
- Операционные системы
- Средства разработки
- Офисные программы
- Средства тестирования, мониторинга и диагностики
- Полезные утилиты
- Графические редакторы
- Средства 3D-моделирования
- Веб-браузеры
- Поисковые системы
- Социальные сети
- «Облачные» сервисы
- Сервисы для обмена сообщениями и конференц-связи
- Разработка веб-сайтов
- Мобильный интернет
- Полезные инструменты
- Средства защиты от вредоносного ПО
- Средства управления доступом
- Защита данных
- Проводные сети
- Беспроводные сети
- Сетевая инфраструктура
- Сотовая связь
- IP-телефония
- NAS-накопители
- Средства управления сетями
- Средства удаленного доступа
- Системная интеграция
- Проекты в области образования
- Электронный документооборот
- «Облачные» сервисы для бизнеса
- Технологии виртуализации
1999 1 2 3 4 5 6 7 8 9 10 11 12 2000 1 2 3 4 5 6 7 8 9 10 11 12 2001 1 2 3 4 5 6 7 8 9 10 11 12 2002 1 2 3 4 5 6 7 8 9 10 11 12 2003 1 2 3 4 5 6 7 8 9 10 11 12 2004 1 2 3 4 5 6 7 8 9 10 11 12 2005 1 2 3 4 5 6 7 8 9 10 11 12 2006 1 2 3 4 5 6 7 8 9 10 11 12 2007 1 2 3 4 5 6 7 8 9 10 11 12 2008 1 2 3 4 5 6 7 8 9 10 11 12 2009 1 2 3 4 5 6 7 8 9 10 11 12 2010 1 2 3 4 5 6 7 8 9 10 11 12 2011 1 2 3 4 5 6 7 8 9 10 11 12 2012 1 2 3 4 5 6 7 8 9 10 11 12 2013 1 2 3 4 5 6 7 8 9 10 11 12