Главная » Языки программирования и собственно написание компьютерных программ

Создание гостевой книги сайта на ASP.NET в Visual Basic

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

В гостевой книге следует предусмотреть поля для ввода имени посетителя, адреса его электронной почты, а также поле для непосредственно сообщения. Все записи, оставленные посетителями сайта, будем сохранять в текстовом файле kniga.txt на винчестере сервера, предоставляющего Web-хостинг. Впрочем, вместо текстового файла можно воспользоваться какой-либо базой данных.

Для программирования гостевой книги запустим VB2010, в окне New Project выберем шаблон Empty ASP.NET Web Application, в поле Name укажем имя нового решения Гостевая_книга и щелкнем на кнопке OK. Теперь добавим к текущему проекту Web-форму. Для этого в пункте меню Project выберем команду Add New Item, в появившемся окне укажем шаблон Web Form и щелкнем на кнопке Add.

На вкладке конструктора формы в панели элементов нам понадобятся четыре метки Label, три текстовых поля TextBox, соответственно, для имени пользователя, его электронной почты и сообщения, одна командная кнопка Button с надписью «Добавить сообщение» и сетка данных GridView для отображения всех вводимых записей. Кроме того, возле каждого текстового поля разместим валидатор RequiredFieldValidator, проверяющий факт заполнения текстовых полей. Правильность заполнения проверять не будем, поскольку в данной ситуации если мы будем слишком «принципиальничать» по поводу вводимых данных, то посетитель потеряет терпение и уйдет на другой ресурс (не наш!). Не забываем, что мы гораздо больше заинтересованы во всех новых сообщениях, чем посетители их написать. С другой стороны (другая крайность), если мы вовсе не будем контролировать заполнения текстовых полей, то у недобросовестного пользователя появится соблазн нажимать кнопку Добавить сообщение без заполнения полей и заполнять таблицу сетки данных пустыми строками, что будет вовсе дискредитацией замысла гостевой книги. В конструкторе формы разместим выбранные элементы управления. После размещения в конструкторе необходимых элементов управления переходим на вкладку программного кода. Текст программы представлен ниже:

Создание гостевой книги в Visual Basic

‘ Данная Web-страница приглашает посетителя оставить

‘ какие-либо записи, которые могут прочитать другие
‘ посетители страницы. Записи сохраняются в текстовом файле
‘ kniga.txt. Записи отображаются на Web-странице с
‘ помощью элемента сетка данных GridView.
PublicClass WebForm1
   Inherits System.Web.UI.Page
   Dim ТаблицаAsNew DataTable
   Dim ЧитательAs IO.StreamReader,Писатель As IO.StreamWriter
   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load
       Label1.Text ="ВЫ МОЖЕТЕ НАПИСАТЬ КАКОЕ-НИБУДЬ " &"СООБЩЕНИЕ В НАШЕЙ ГОСТЕВОЙ КНИГЕ"
        Label2.Text ="Ваше имя:"
        Label3.Text = "Ваш E-mail:"
       Label4.Text ="Ваше сообщение:"
        Button1.Text ="Добавить сообщение"
       ‘ Разрешаем многострочие:
        TextBox3.TextMode = TextBoxMode.MultiLine
       ‘ Контролируем обязательность заполнения всех полей:
        RequiredFieldValidator1.ErrorMessage = "* Следует заполнить это текстовое поле"
        RequiredFieldValidator1.ControlToValidate = "TextBox1"
        RequiredFieldValidator2.ErrorMessage = "* Следует заполнить это текстовое поле"
        RequiredFieldValidator2.ControlToValidate = "TextBox2"
        RequiredFieldValidator3.ErrorMessage = "* Следует заполнить это текстовое поле"
        RequiredFieldValidator3.ControlToValidate = "TextBox3"
       Таблица.Columns.Add("Дата") : Таблица.Columns.Add("Имя")
       Таблица.Columns.Add("E-mail")
       Таблица.Columns.Add("Сообщение")
        GridView1.BorderWidth = WebControls.Unit.Pixel(2)
       ЗаполнитьGridView()
   End Sub
   Public SubЗаполнитьGridView()
       ‘ Эта процедура читает файл kniga.txt (если его нет, то
       ‘ создает, разбивает каждую строку файла на четыре части
       ‘ (дата, имя, E-mail и сообщение) и заполняет этими
       ‘ частями строки Таблицы. Затем записывает эту Таблицу
       ‘ в сетку данных GridView.
       ‘ Открываем файл kniga.txt, а если его нет, то
       ‘ его создаем:
       Dim Открыватель As IO.FileStream = New IO.FileStream(Request.PhysicalApplicationPath & _
                        "kniga.txt", IO.FileMode.OpenOrCreate)
       ‘ Открываю поток для чтения всех записей из файла:
        Читатель =New IO.StreamReader(Открыватель)
       ‘ В качестве разделителя частей строки файла выбираю
       ‘ Tab, поскольку Tab невозможно ввести в текстовое
       ‘ поле. После нажатия клавиши <Tab> происходит переход
       ‘ в следующее текстовое поле.
        DimРазделительAsChar() = NewChar() {vbTab} ‘-массив
       ‘ Читаю из файла одну строку:
       Dim Одна_строка AsString = Читатель.ReadLine
       Dim Массив_частей_строкиAs String()
       ‘ Цикл по строчкам файла kniga.txt
       While Одна_строка <> ""
           ‘ Функция Split делит строку на четыре части и
            ‘ присваивает каждую часть элементам массива:
            Массив_частей_строки = Одна_строка.Split(Разделитель)
           ‘ Загружаю данные в таблицу, то есть заполняю
           ‘ одну строку таблицы:
            Таблица.LoadDataRow(Массив_частей_строки, True)
           ‘ Читаю из файла одну строку:
            Одна_строка = Читатель.ReadLine
       End While
        GridView1.DataSource = Таблица
       ‘ Обновление сетки данных:
        GridView1.DataBind()
        Таблица.Clear()
        Читатель.Close() : Открыватель.Close()
   End Sub
   Protected Sub Добавить(ByVal sender As Object, ByVal e As EventArgs)Handles Button1.Click
       ‘ Открываю поток для добавления данных в конец файла:
        Писатель =New IO.StreamWriter(Request.PhysicalApplicationPath & "kniga.txt", True)
       ‘ True означает разрешить добавление строк в файл.
       ‘ Записываю в файл новое сообщение:
        Писатель.WriteLine(DateTime.Now.Date.ToString(). _
              Substring(0, 10) & vbTab & TextBox1.Text & _
              vbTab & TextBox2.Text & vbTab & TextBox3.Text)
       ‘ Очищаю поля и закрываю поток:
        TextBox1.Text ="" : TextBox2.Text = ""
        TextBox3.Text =""
        Писатель.Close()
        ЗаполнитьGridView()
   End Sub
EndClass

Как видно из программного кода, вначале создаем таблицу данных класса DataTable и два потока данных для чтения и для записи файлов так, чтобы они были видны из всех процедур класса. При обработке события загрузки формы организуем контроль обязательности заполнения текстовых полей формы, задаем «шапку» таблицы (т. е. названия колонок таблицы), а последней командой вызываем процедуру ЗаполнительGridView.

Эта процедура в цикле While читает строки текстового файла kniga.txt и заполняет ими строки таблицы данных методом LoadDataRow(). Далее заполненную таблицу данных указываем в качестве источника данных (DataSource) для сетки данных GridView1, предназначенной для визуализации (отображения) таблицы в форме. После этого важно очистить таблицу данных методом Clear ().

При обработке события «щелчок на кнопке» открываем поток данных писатель для добавления данных в конец файла kniga.txt и записываем в этот файл текстовую строку, содержащую текущую дату, имя посетителя Web-страницы, его e-mail и непосредственно его сообщение. Причем в качестве разделителя между этими текстовыми строками мы используем управляющий символ Tab, поскольку его невозможно ввести в текстовое поле, т. к. после нажатия клавиши предусмотрен переход в следующее текстовое поле. После закрытия потока данных писатель вызываем процедуру ЗаполнитьGridView, которая как бы начинает опять «с чистого листа»: снова открывает поток для чтения файла и опять заполняет таблицу данных, которая, как мы помним, была очищена от предыдущих данных. Именно поэтому строки (команды) процедуры ЗаполнитьGridView были оформлены в отдельную процедуру, поскольку заполнение таблицы и ее визуализация происходят два раза: один раз при загрузке формы, а другой при добавлении новой записи.

Один комментарий к записи “Создание гостевой книги сайта на ASP.NET в Visual Basic
  1. михаил в cказал :

    хорошая статья!

Добавить комментарий

Ваш комментарий появится после модерации.