Общие сведения о синтаксисе веб-страниц ASP.NET

Visual Studio 2010

Обновлен: Ноябрь 2007

Веб-страницы ASP.NET создаются аналогично статическим веб-страницам HTML (страницам, которые не включают серверную обработку), но они содержат дополнительные элементы, которые ASP.NET распознает и обрабатывает при запуске страницы. Характеристики, отличающие веб-страницы ASP.NET от статических HTML-страниц (или других страниц):

  • Файл страницы имеет расширение ASPX, а не HTM, HTML или какое-либо другое расширение. Расширение ASPX приводит к обработке страниц средой ASP.NET.

    k33801s3.alert_note(ru-ru,VS.100).gifПримечание.

    Сопоставление расширений имен файлов в ASP.NET производится в IIS. По умолчанию ASPX-страницы выполняются средствами ASP.NET, а HTM-страницы и HTML-страницы — нет.

  • Дополнительная директива @ Page или другая директива, соответствующая типу создаваемой страницы.

  • Элемент form, который настраивается правильным образом для ASP.NET. Элемент form необходим только в том случае, когда страница содержит элементы управления, значения которых требуется использовать во время обработки страницы.

  • Серверные веб-элементы управления.

  • Код сервера, если на страницу добавляется собственный код.

    k33801s3.alert_note(ru-ru,VS.100).gifПримечание.

    Если создаваемая страница должна соответствовать стандартам XHTML, необходимо включить дополнительные элементы, например элемент DOCTYPE. Дополнительные сведения см. в разделе ASP.NET и XHTML.

В следующих разделах предоставляются дополнительные сведения о каждом из этих элементов.

Можно переименовать любую HTML-страницу, изменив ее расширение на ASPX, и она будет выполняться в виде веб-страницы ASP.NET. Однако если страница не включает серверную обработку, то нет необходимости добавлять к ней расширение ASPX, поскольку это увеличивает затраты при обработке страницы.

В следующем примере показана страница, содержащая основные элементы, которые составляют веб-страницу ASP.NET. Эта страница содержит статический текст, который может иметься и в HTML-странице, а также элементы, которые имеют отношение только к ASP.NET. Элементы, относящиеся только к ASP.NET, выделены.

k33801s3.alert_note(ru-ru,VS.100).gifПримечание.

Уточним, что этот пример страницы не настроен для XHTML-соответствия. Дополнительные сведения см. в разделе ASP.NET и XHTML.

k33801s3.alert_security(ru-ru,VS.100).gifПримечание о безопасности.

В этом примере страницы имеется текстовое поле, принимающее данные от пользователя, что несет в себе потенциальную угрозу безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ Page Language="C#" %>
<html>
<script runat="server">Void Button1_Click(object sender, System.EventArgs e) {    Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head runat="server">
  <title>Basic ASP.NET Web Page</title>
</head>
<body>
  <form id="form1" runat="server">
    <h1>Welcome to ASP.NET</h1>
    <p>Type your name and click the button.</p>
    <p>
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>      <asp:Button ID="Button1" runat="server"         Text="Click" OnClick="Button1_Click" />
    </p>
    <p>
      <asp:Label ID="Label1" runat="server"></asp:Label>
    </p>
  </form>
</body>
</html>

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

Наиболее часто используется директива @ Page, с помощью которой можно задавать множество параметров конфигурации для страницы, включая следующие параметры:

  • Серверный язык программирования для кода на странице.

  • Содержится ли код сервера непосредственно в странице, которая тогда называется однофайловой страницей, или код содержится в отдельном файле класса, и тогда страница называется страницей с выделенным кодом. Страница из предыдущего примера является однофайловой страницей; код находится непосредственно в странице, и директива @ Page не включает сведения о связанных файлах класса. Дополнительные сведения см. далее в разделе "Код сервера", а также в разделе Модель кода веб-страниц ASP.NET.

  • Параметры отладки и трассировки.

  • Имеет ли страница связанную главную страницу, и, следовательно, должна ли она рассматриваться как страница содержимого.

Если директива @ Page не включена в страницу, или если эта директива не включает определенные настройки, параметры наследуются из файла конфигурации для веб-приложения (файл Web.config) или из файла конфигурации узла (файл Machine.config).

Кроме директивы @ Page, можно включить другие директивы, которые поддерживают дополнительные параметры, специфичные для страницы. Наиболее часто используются следующие директивы:

  • @ Import. Эта директива позволяет указывать пространства имен, на которые требуется ссылаться в коде.

  • @ OutputCache. Эта директива позволяет указать, что страница должна кэшироваться, равно как и параметры, указывающие, когда и как долго кэшируются страницы.

  • @ Implements. Эта директива позволяет указать, что страница реализует интерфейс .NET.

  • @ Register. Эта директива позволяет регистрировать дополнительные элементы управления для использования на странице. Директива @ Register объявляет префикс тега элемента управления и расположение сборки элемента управления. Эту директиву необходимо использовать в случаях, когда требуется добавить на страницу пользовательские элементы управления или пользовательские элементы управления ASP.NET.

Некоторые типы файлов ASP.NET используют директиву, отличную от @ Page. Например, главная страница ASP.NET использует директиву @ Master, а пользовательские элементы управления ASP.NET используют директиву @ Control. Каждая директива позволяет задать различные параметры, соответствующие файлу.

Дополнительные сведения см. в разделах Общие сведения о главных страницах ASP.NET и Пользовательские элементы управления ASP.NET.

Если страница содержит элементы управления, дающие пользователям возможность взаимодействовать со страницей и отправлять ее, страница должна включать элемент form. При этом используется стандартный HTML-элемент form, но согласно определенным правилам. Ниже приведены правила использования элемента form:

  • Страница может содержать только один элемент form.

  • Элемент form должен содержать атрибут runat, который имеет значение server. Этот атрибут позволяет ссылаться на форму и на элементы управления страницы программным способом в коде сервера.

  • Серверные элементы управления, которые могут выполнять обратную передачу, должны находиться внутри элемента form.

  • Открывающий тег не должен содержать атрибут action. ASP.NET устанавливает эти атрибуты динамически при обработке страницы, переопределяя любые параметры, которые, возможно, были установлены ранее.

В большинстве случаев на страницы ASP.NET добавляются элементы управления, дающие пользователю возможность взаимодействовать со страницей, включая кнопки, текстовые поля, списки и т. д. Эти серверные веб-элементы управления похожи на кнопки HTML и элементы input. Однако они обрабатываются на сервере, что позволяет использовать код сервера для задания их свойств. Эти элементы управления также вызывают события, которые могут обрабатываться в коде сервера.

Серверные элементы управления используют специальный синтаксис, который ASP.NET распознает при запуске страницы. В следующем примере кода показаны некоторые типичные серверные веб-элементы управления.

k33801s3.alert_security(ru-ru,VS.100).gifПримечание о безопасности.

Элемент TextBox допускает ввод данных пользователем, что создает потенциальную угрозу безопасности. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" 
    Text="Click" OnClick="Button1_Click" />

Имена тегов для серверных элементов управления ASP.NET начинаются с префикса; в данном случае это префикс asp:. Префикс может отличаться, если элемент управления не является частью платформы .NET Framework. Серверные элементы управления ASP.NET также включают атрибут runat="server" и, при необходимости, идентификатор, который можно использовать для ссылки на элемент управления в коде сервера.

Во время выполнения страница определяет серверные элементы управления и выполняет код, который связан с этими элементами управления. Многие элементы управления отображают некоторую разметку HTML или другую разметку на странице. Например, элемент управления asp:textbox отображает на странице элемент input с атрибутом type="text". Однако однозначное сопоставление между серверным веб-элементом управления и HTML-элементом не обязательно. Например, элемент управления asp:calendar отображает HTML-таблицу. Некоторые элементы управления не отображают в веб-обозревателе ничего; они только обрабатываются на сервере и предоставляют сведения для других элементов управления.

Элементы HTML в качестве серверных элементов управления

Вместо серверных элементов управления ASP.NET или в дополнение к ним можно использовать обычные элементы HTML как серверные элементы управления. Можно добавить атрибут runat="server" и атрибут ID к любому HTML-элементу на странице. При запуске страницы ASP.NET идентифицирует такой элемент как серверный элемент управления и делает его доступным для кода сервера. Например, можно добавить необходимые элементы в HTML-элемент body, как показано в следующем примере:

<body runat="server" id="body">

Затем можно ссылаться на элемент body в коде сервера — например, для задания цвета фона в ответ на ввод данных пользователем или получение информации из базы данных во время выполнения.

Дополнительные сведения см. в разделе Общие сведения о серверных веб-элементах управления ASP.NET.

Большинство страниц ASP.NET имеет код, который выполняется на сервере при обработке страницы. ASP.NET поддерживает множество языков, включая C#, Visual Basic, J#, JScript и другие.

ASP.NET поддерживает две модели написания кода сервера для веб-страницы. В однофайловой модели код для страницы находится в элементе script, где открывающийся тег содержит атрибут runat="server". В примере, приведенном ранее в этом разделе, показана однофайловая модель.

Кроме того, можно создать код для страницы в отдельном файле класса; такая модель называется моделью с выделенным кодом. В этом случае на веб-странице ASP.NET обычно отсутствует код сервера. Вместо этого директива @ Page включает сведения, которые связывают страницу ASPX с ее файлом с выделенным кодом. В следующем примере показана типичная директива @ Page для страницы с файлом с выделенным кодом:

<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>

Атрибут CodeFile задает имя отдельного файла класса, а атрибут Inherits задает имя класса в файле с выделенным кодом, соответствующем странице.

Дополнительные сведения см. в разделе Модель кода веб-страниц ASP.NET.

k33801s3.alert_note(ru-ru,VS.100).gifПримечание.

Веб-страницы ASP.NET могут также включать клиентский сценарий, который запускается в веб-обозревателе в ответ на события на стороне клиента. Страница ASP.NET может включать и клиентский сценарий, и код сервера. Дополнительные сведения см. в разделе Клиентский сценарий на веб-страницах ASP.NET.

Показ: