Если вы знакомы с классическим ASP, то вы будете знакомы с синтаксисом привязки данных в ASP.NET, даже если функции не совпадают. Выражением привязки данных является код между <%# и %> в файле ASPX. Он позволяет привязывать данные к контроллеру, а также свойства, выражения и результаты вызовов методов на странице, которые должны быть привязаны к контроллеру. Хотя эту функцию легко использовать, она иногда вызывает путаницу при определении того, какой контент разрешен к привязке и использовался ли он.
Элементы привязки данных
При вызове метода DataBind в ASP.NET страницы выражение привязки данных связывается со свойствами, свойствами серверного элемента управления и источниками данных в ASP.NET. Вы можете разместить выражение в числовой части пары значение/значение атрибута при открытии вкладки, управляемой сервером, или в любом месте страницы. Все выражения привязки данных, независимо от того, где они расположены, заключаются в символы <%# и %>.
При использовании контроллера данных (Repeater, DataGrid и т. д.) параметром выражения обычно является имя столбца источника данных. В любом случае можно использовать любое допустимое выражение, если оно возвращает значение. Аналогично, тот же синтаксис можно использовать для элементов управления внешним списком. Сюда входит отображение значений на странице или сборка свойств контроллера.
Container.DataItem — это псевдоним DataItem во время выполнения для определенного элемента. Он сопоставляет один элемент из источника данных, например строку из запроса данных или один элемент из вектора. Фактический тип данных DataItem определяется источником данных. Таким образом, при работе с вектором целых чисел DataItem также является целым числом.
В следующем списке рассматриваются некоторые ситуации с синтаксисом VB.NET:
<%# Container.DataItem %> — возвращает вектор-строку
<%# Container.DataItem("expression") %> — возвращает определенный элемент в контейнере DataView Поле
< %# Container.DataItem.PropertyName %> — возвращает значение свойства определенной строки в источнике данных.
<%# CStr(Container.DataItem.PropertyName) %> — возвращает значение свойства и преобразует его в строковую форму
при при использовании C# синтаксис немного отличается. Следующий список содержит код C#, соответствующий приведенному выше списку. Обратите внимание, что основной синтаксис тот же, но есть изменения в преобразовании возвращаемых значений атрибутов и типов данных.
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container. DataItem).PropertyName.ToString() %>
Синтаксис единообразен при работе со свойствами и методами страницы. Пока возвращается строковое значение, синтаксис точно такой же. В следующем списке приведен пример:
<%# propertyName %> — возвращает значения свойств на уровне страницы
<asp:ListBox id="lstValues" datasource='<%# propertyName %>' runat="server">-- Возвращает то же, что и значения свойств уровня страницы (векторы, наборы объектов и т. д.), привязанные к контроллеру данных
<%# (objectName.PropertyName) %> --Отображение значений свойств объекта уровня страницы
<%# MethodName() %>--Метод страницы отображения возвращает значения.
Используйте следующий синтаксис, чтобы использовать одно значение на странице (значения, возвращаемые свойствами, методами и т. д.)
<%= Value %>
Код C# в листинге A иллюстрирует данные привязка в веб-форме ASP.NET. Он выбирает имя и номер телефона сотрудника из таблицы «Сотрудники» SQL Sever Northwind. Значение запроса отображается через контроллер повторителя ASP.NET. Значения столбца вставляются посредством привязки данных. Заголовок формы таблицы собирается посредством вызова метода. Кроме того, свойство ItemIndex объекта Dataitem используется для отображения количества строк. Свойство ItemIndex начинается с 0 и увеличивается на 1 между отображениями.
Листинг B содержит эквивалентный код VB.NET. Основное отличие состоит в том, что в VB.NET используются круглые скобки, а в C# — квадратные. Приведение строк в VB.NET не требуется.
Использование Contain.DataItem немного утомительно, поскольку вам в любой момент приходится обращать внимание на типы данных и преобразование типов данных. Microsoft предоставляет класс DataBinder, который может еще больше упростить разработку.
Использование
класса DataBinder DataBinder подробно описано в документации Microsoft (MSDN). Этот метод позволяет разработчику RAD легко генерировать синтаксис привязки анализируемых данных. Этот метод также можно использовать в объявлениях страниц веб-форм для упрощения сопоставления одного типа с другим.
При использовании значений данных на странице ASP.NET вы можете использовать метод Eval класса DataBinder, чтобы позволить .NET выполнять тяжелую работу. Метод Eval принимает ранее переопределенный объект Container.DataItem; он вычисляет подробные данные для каждого указанного поля в выражении и отображает их. Синтаксис следующий:
DataBinder.Eval(Container.DataItem, «имя поля», «необязательное форматирование»).
Используя этот синтаксис, вы можете переписать первый пример, используя DataBinder.Eval. Код C# см. в листинге C. Листинг D содержит эквивалентный код VB.NET.
DataBinder.Eval очень эффективен для передачи работы системе, но имейте в виду, что затраты времени и ресурсов на поиск элементов системы и определение типов объектов/данных высоки.
Богатые возможности
привязки данных делают размещение данных на страницах ASP.NET относительно простым. На выбор предлагается множество различных вариантов привязки данных, в том числе: привязка данных к контроллеру и определение способа их отображения или выбор привязки данных к контроллеру, объявленному на странице ASP.NET. В конце концов, все зависит от ваших предпочтений, но наличие большого количества вариантов — это, в конечном счете, хорошо.
Тони Паттон начал свою карьеру в качестве разработчика программного обеспечения и получил сертификаты по Java, VB, Lotus и XML.