Страница веб-формы ASP.NET представляет собой декларативный текстовый файл с расширением .aspx. Помимо статического содержимого, вы можете отмечать элементы, используя восемь различных синтаксисов. В этом разделе рассматриваются эти элементы синтаксиса и приводятся некоторые примеры их использования.
Синтаксис кода рендеринга: <% %> и <%= %>
Блоки рендеринга кода представлены элементами <% ... %>, которые позволяют управлять отображаемым содержимым и выполняются на этапе отображения страницы веб-форм. исполнение. В следующем примере показано, как использовать их для циклического перемещения по содержимому HTML.
<%@ Язык страницы="VB" %>
<html>
<тело>
<% Dim I как целое число
Для I = от 0 до 7%>
<font size="<%=I%>"> Привет, мир </font> <br>
<%Следующий %>
</тело>
</html>
<% ... %>, только выполняется, а выражение, содержащее знак равенства (<%= ... %>), вычисляет результат при отображении содержимого. Таким образом, <%="Hello World" %> отображает тот же результат, что и код C# <% Response.Write("Hello World" %>).
Обратите внимание: поскольку язык требует использования маркеров для завершения или разделения операторов (например, точки с запятой ; в C#), важно правильно размещать эти маркеры.
Код C#
<% Response.Write("Hello World" %> требует точку с запятой для завершения инструкции.
<%="Hello World"; %> Ошибка: вызывает "Response.Write("Hello World";);".
<%="Hello World" %> Точка с запятой не требуется.
Синтаксис объявления кода: <script runat="server">
Блок объявления кода определяет переменные-члены и методы, которые будут скомпилированы в класс Page. Эти блоки можно использовать для построения логики страниц и навигации. В следующем примере показано, как определить метод Subtract в блоке <script runat="server"> и затем вызвать его на странице.
<html>
<script Language="VB" runat=server>
Функция вычитание (Num1 как целое число, Num2 как целое число) как целое число
Возврат Num1-Num2
Конечная функция
</script>
<тело>
<%
Тусклое число как целое число = 100
Делать, пока число > 0
Response.Write("Значение: " & Число & "<br>")
Число = Вычесть (Число, 1)
Петля
%>
</тело>
</html>
Обратите внимание: в отличие от ASP - в ASP функции должны быть определены в блоке <% %> - все функции и глобальные переменные должны быть определены с использованием тега <script runat=server>. Объявление функции в блоке <% %> выдаст сообщение об ошибке компиляции синтаксиса.
Синтаксис серверных элементов управления
Настраиваемые серверные элементы управления ASP.NET позволяют разработчикам страниц динамически создавать пользовательские интерфейсы HTML и отвечать на запросы клиентов. Они выражаются в файлах с использованием декларативного синтаксиса на основе разметки. Эти теги отличаются от других тегов тем, что содержат атрибут «runat=server». В следующем примере показано, как использовать серверный элемент управления <asp:label runat="server"> на странице ASP.NET. Этот элемент управления соответствует классу Label в пространстве имен System.Web.UI.WebControls.
Добавив тег с идентификатором «Message», можно создать экземпляр Label во время выполнения:
<asp:label id="Message" font-size=24 runat="server"/>
Мы можем использовать это имя для доступа к элементу управления. . Следующий код устанавливает свойство Text элемента управления.
Message.Text = «Добро пожаловать в ASP.NET»
<html>
<script Language="VB" runat=server>
Sub Page_Load (Отправитель как объект, E как EventArgs)
Message.Text = «Добро пожаловать в ASP.NET»
Конец субтитра
</скрипт>
<тело>
<asp:label id="Сообщение" font-size=24 runat=server/>
</тело>
</html>
Синтаксис управления HTML-сервером
Элементы управления HTML-сервером позволяют разработчикам программно управлять HTML-элементами на странице. Тег управления сервером HTML отличается от элемента HTML клиента тем, что он имеет атрибут «runat=server». В следующем примере показано, как использовать серверный элемент управления HTML <span runat=server> на странице ASP.NET.
<html>
<script Language="VB" runat=server>
Sub Page_Load (Отправитель как объект, E как EventArgs)
Message.InnerHtml = «Добро пожаловать в ASP.NET»
Конец субтитра
</скрипт>
<тело>
<span id="Сообщение" style="font-size:24" runat=server/>
</тело>
</html>
Синтаксис привязки данных: <%# %>
Встроенная поддержка привязки данных в ASP.NET позволяет разработчикам страниц иерархически привязывать свойства элемента управления к значениям контейнера данных. Код в блоке кода <%# %> выполняется только при вызове метода DataBind его родительского контейнера элемента управления. В следующем примере показано, как использовать синтаксис привязки данных в элементе управления <asp:datalist runat=server>.
В этом списке данных каждому элементу присвоен шаблон. Содержимое шаблона элемента указывается с помощью выражения привязки данных, а Container.DataItem указывает на источник данных, используемый списком данных MyList.
<asp:datalist id="MyList" runat=server>
<Шаблон предмета>
Вот значение: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
В этом случае источник данных элемента управления MyList задается программно, а затем вызывается метод DataBind().
Вызов метода DataBind элемента управления вызовет рекурсивное дерево (начиная с элемента управления и заканчивая нижними элементами управления в дереве); будет вызвано событие DataBinding каждого серверного элемента управления в иерархии, и выражение привязки данных в значениях элемента управления. рассчитываются соответственно. Таким образом, если вызывается метод DataBind страницы, будет вызываться каждое выражение привязки данных на странице.
<html>
<script Language="VB" runat=server>
Sub Page_Load (Отправитель как объект, E как EventArgs)
Тусклые элементы как новый ArrayList
Items.Add("Один")
Items.Add("Два")
Items.Add("Три")
MyList.DataSource = Элементы
МойСписок.DataBind()
Конец субтитра
</script>
<тело>
<asp:datalist id="MyList" runat=server>
<Шаблон предмета>
Вот значение: <%# Container.DataItem %>
</ItemTemplate>
</asp:список данных>
</тело>
</html>
ASP.NET 2.0 также включает новый упрощенный синтаксис привязки данных, который позволяет элементам управления автоматически привязывать данные к элементам управления источником данных без необходимости вызова DataBind() в коде страницы. Этот синтаксис обсуждается в главе «Осуществление доступа к данным».
Синтаксис тега объекта: <object runat="server" />
Тег объекта позволяет разработчикам страниц использовать декларативный синтаксис на основе тегов для объявления и создания экземпляров переменных. В следующем примере показано, как использовать нотацию объекта для создания экземпляра класса ArrayList.
Этот объект автоматически создается во время выполнения, и к нему можно получить доступ через идентификатор «items».
<html>
<script Language="VB" runat=server>
Sub Page_Load (ByVal Sender As Object, ByVal E как EventArgs)
ArrayItems.Add("Один")
ArrayItems.Add("Два")
ArrayItems.Add("Три")
МойСписок.DataSource = Элементы массива
МойСписок.DataBind()
Конец субтитра
</script>
<тело>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=server/>
<asp:datalist id="MyList" runat=server>
<Шаблон предмета>
Вот значение: <%# Container.DataItem %>
</ItemTemplate>
</asp:список данных>
</тело>
</html>
Синтаксис комментариев на стороне сервера: <%-- Comment --%>
Комментарии на стороне сервера позволяют разработчикам страниц предотвращать выполнение и отображение серверного кода (включая серверные элементы управления) и статического содержимого. В следующем примере показано, как предотвратить выполнение и отправку содержимого клиенту. Обратите внимание, что вся информация между <%-- и --%> будет отфильтрована и будет видна только в исходном файле сервера, даже если он содержит другие директивы ASP.NET.
<html>
<тело>
Содержимое ниже было скрыто от клиентов браузера с помощью комментария на стороне сервера.
(просмотрите исходный код .aspx, чтобы понять, что мы имеем в виду :-)
<%--
<asp:calendar id="MyCal" runat=server/>
<% для I = от 0 до 44%>
Привет, мир <бр>
<%Следующий %>
--%>
</тело>
</html>
Синтаксис включения файлов на стороне сервера: <-- #Include File="Locaton.inc" -->
Включение файлов на стороне сервера (#Include) позволяет разработчикам вставлять содержимое определенного файла в любое место ASP. NET-страница. В следующем примере показано, как вставить на страницу собственные заголовки и нижние колонтитулы.
<html>
<тело>
<!-- #Include File="Header.inc" -->
<бр />
<h3> Содержимое главной страницы </h3>
<бр />
<!-- #Include File="Footer.inc" -->
</тело>
</html>
Синтаксис выражений: <%$ ... %>Новые возможности версии 2.0 В
ASP.NET 2.0 добавлен новый синтаксис декларативных выражений для подстановки значений перед анализом страницы. Это очень полезно, когда нам нужно заменить значение свойства элемента управления сервером значением строки подключения или настройкой приложения в файле Web.config. Его также можно использовать для замены значений в файлах ресурсов во время локализации.
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ Ресурсы: ExchRate, ConvertLabel %>' runat="server"/>