Книга: Обработка баз данных на Visual Basic®.NET
Применение промежуточного уровня для презентационной логики
Разделы на этой странице:
Применение промежуточного уровня для презентационной логики
Данные, вводимые пользователем в Web-форму (например, дата), часто нуждаются в проверке на соответствие заданным требованиям. Большинству разработчиков известно, что эта простая задача может быть выполнена несколькими разными способами в клиентской части или на презентационном уровне. Однако это требование ограничивает клиентский код только языком HTML. В этом контексте становится ясным значение промежуточного уровня: именно на этом уровне происходит взаимодействие клиента с обрабатываемыми им данными.
В Visual Basic .NET предусмотрена удобная встроенная функция IsDate для управления процессами проверки правильности формата введенной даты. Она возвращает логическое значение, которое определяет успешное или неудачное преобразование переданной ей информации в корректный формат даты. Рассмотрим подробнее эту функцию на более высоком уровне.
Создадим Web-форму datecheck.aspx с помощью шаблона ASP.NET Web Application среды Visual Studio .NET. В данной Web-форме будут располагаться только два серверных элемента управления: текстовое поле и кнопка. После щелчка на кнопке введенная в текстовом поле информация передается серверу, на котором выполняется функция Is Date. Затем результат выполнения функции передается обратно Web-форме. В листинге 12.1 приводится вспомогательный код данной Web-формы datecheck.aspx.vb, а в листинге 12.2 — код самой Web-формы datecheck.aspx.
ЛИСТИНГ 12 1. Вспомогательный код Web-формы datecheck.aspx.vb
Public Class datecheck
Inherits System.Web.UI.Page
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
#Region " Web Form Designer Generated Code "
' Этот код создан конструктором Web-форм.
<System.Diagnostics.DebuggerStepThrough()> Private Sub _
InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: Этот вызов метода организован конструктором Web-форм.
' Не изменяйте его вручную в окне редактора кода.
InitializeComponent()
End Sub
#End Region
Dim Msg As String
Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Check Date"
TextBox1.Text = DateTime.Now.ToString
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Msg = IsDate(Request.Form.Item("TextBoxl")).ToString
Msg += "<BR>"
Msg += Request.Form.Item("TextBox1")
If Page.IsPostBack Then
Response.Write(Msg)
Button1.Text = "Date Checked"
End If
End Sub
End Class
В листинге 12.1 нет никаких следов взаимодействия с клиентской частью.
ЛИСТИНГ 12.2. Код самой Web-формы datecheck.aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="datecheck.aspx.vb" Inherits="Novelty1.datecheck" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>datecheck</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual.Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form method="post" runat="server">
<asp:TextBox runat="server" Width="165px" Height="20px">
</asp:TextBox>
<asp:Button runat="server" Width="104px" Height="25px" Text="Button">
</asp:Button>
</form>
</body>
</HTML>
В листинге 12.2 элементы управления формы содержат директиву runat=server, которая указывает на выполнение сервером действий, определенных во вспомогательном коде datecheck.aspx.vb. В листинге 12.3 приведен фактически генерируемый HTML-код, который передается клиенту. Код серверного элемента управления никогда не передается клиенту. Клиент получает только HTML-результат выполнения сервером кода данного элемента управления.
ЛИСТИНГ 12.3. HTML-код клиента
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>datecheck</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="Form1" method="post" action="datecheck.aspx">
<input type="hidden" name="_VIEWSTATE" value="dDwxNDg50Tk5MzM7dDw7bDxpPDE+Oz47bDxOPDtsPGk8Mz47PjtsPHQ8cDxwPGw8VGV4dDs+02w8Q2hlY2sgRGFOZTs+Pjs+Ozs+Oz4+Oz4+Oz6QlVh6gd6Gbr95VzOdnBWPTkj/8w==" />
<input name="TextBox1" type="text" value="17.06.2003 7:47:24" />
<input type="submit" name="Button1" value="Check Date" style="height:25px; width:104px; Z-INDEX: 102; LEFT: 14px; POSITION: absolute; TOP: 73px" />
</form>
</body>
</HTML>
В листинге 12.3 демонстрируется, что практически любая прикладная логика может быть сохранена на промежуточном уровне. В следующем разделе описываются способы работы с базой данных с помощью промежуточного уровня. Учтите, что подключение к базе данных и выполнение запроса организованы сложнее, чем проверка введенных данных.
- ГЛАВА 12 Web-службы и технологии промежуточного уровня
- Определение позиционного уровня
- Применение функции scanf( )
- Применение PHP-технологий в программе HtmlPad
- 17.6 Применение агентов новостей для настольных систем
- 2.3. Эмпирическая модель обучения Дэвида Колба и ее применение в практике бизнес-тренинга
- Применение основного потока
- Применение пользовательских атрибутов
- Применение peristaltic.py к арматуре
- Применение лямбда-выражения в качестве задачи
- Проблемы в команде и применение к ним принципов осознанной практики
- Глава 3 Создание и применение шаблонов