Общие сведения о выражениях ASP.NET

Visual Studio 2010

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

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

Типичный пример использования выражений — ссылки на строки соединения в элементах управления источников данных. Вместо включения строки соединения непосредственно в элемент управления источника данных в виде значения параметра можно использовать выражение, которое указывает место расположения строки соединения в файле конфигурации. Во время выполнения выражение разрешается путем считывания строки соединения из файла конфигурации. Выражения можно использовать для задания любого параметра, который необходимо разрешить во время работы, вместо того, чтобы задавать для него статическое значение.

Использование выражений облегчает использование приложений следующим образом:

  • Можно уменьшить объем кода в приложении путем создания декларативных ссылок на динамическую информацию. Это помогает избежать написания кода для задания значений свойств во время выполнения.

  • Одни и те же параметры можно использовать в нескольких элементах управления. Так, например, при хранении строки соединения в файле Web.config и использовании выражений для обращения к ней на страницах строку соединения достаточно изменить в единственном месте хранения вместо того, чтобы менять ее во всех элементах управления, в которых она используется.

  • Важную информацию, такую как учетные данные строки соединения (или другие данные приложения), можно хранить в файле Web.config с последующим шифрованием данных.

  • При работе в визуальном конструкторе, например, в Visual Studio, можно применять средства конструктора, помогающие составлять выражения.

Выражения также являются расширяемыми, что позволяет задавать собственный синтаксис выражений. После этого можно создавать выражения, которые будут обращаться к пользовательскому обработчику выражений, возвращающему значение, основанное на заданной пользователем логике.

Базовый синтаксис выражений в ASP.NET имеет следующий вид:

<%$ expressionPrefix: expressionValue %>

Знак доллара («$») в ASP.NET означает, что за ним последует выражение. Префикс выражения определяет тип выражения: AppSettings, ConnectionStrings или Resources. После двоеточия («:») следует значение выражения, которое ASP.NET будет разрешать.

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

Зачастую выражения используются для задания свойства строки соединения элемента управления, например, SqlDataSource, основанного на значении строки соединения, записанной в файле Web.config. Так, может существовать элемент управления SqlDataSource со следующим атрибутом строки соединения:

<asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>

Выделенный код демонстрирует выражение, которое заключается в кавычки и определяет значение атрибута. Данное выражение использует строку соединения с именем «NorthwindConnectionString1», которая определена в элементе connectionStrings файла Web.config. Элемент connectionStrings может выглядеть следующим образом:

<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <!-- additional settings -->
</configuration>
d5bd1tad.alert_note(ru-ru,VS.100).gifПримечание.

Для повышения безопасности рекомендуется шифровать раздел файла конфигурации, в котором содержатся строки соединения. Дополнительные сведения см. в разделе Шифрование сведений о конфигурации с помощью функции защищенной конфигурации. В предыдущем примере для ясности раздел configuration файла конфигурации приведен в незашифрованном виде.

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

Выражения можно использовать не только для задания строк соединения; их также можно использовать для обращения к параметрам приложения, заданным в файле конфигурации, доступном для веб-узла. Так, часто повторяющиеся строки, например, уведомления об авторских правах на веб-узле, могут храниться в разделе appSettings файла Web.config, который может выглядеть следующим образом:

<appSettings>
  <add key="copyright" value="(c)Copyright 2004 Northwind Traders"/>
</appSettings>

Это значение можно использовать на страницах ASP.NET, задав выражение, аналогичное следующему:

<%$ AppSettings: copyright %>

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

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

<p align="center">

<asp:Literal runat="server" text="<%$ AppSettings: copyright %>"/>

</p>

Кроме отображения значений, содержащихся в файле конфигурации, можно отображать значения, хранящиеся в файлах ресурсов (RESX или RESOURCE). Обычно файлы ресурсов используются для хранения сведений для конкретного языка или комбинации языка и региональных параметров. При использовании выражений вместе с файлами ресурсов можно создавать веб-страницы, отображающие текст на различных языках в зависимости от значений, определяемых во время выполнения. Это могут быть языковые и региональные параметры, передаваемые обозревателем, или же язык, явно выбранный пользователем.

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

<asp:Label id="label1" runat="server" text="<%$ Resources: Messages, ThankYouLabel %>" />

В папке App_GlobalResources могут присутствовать файлы ресурсов с именами Messages.resx, Messages.es.resx, Message.de.resx и т.д. — по файлу ресурсов Messages для каждого поддерживаемого языка. Файл Messages.resx представляет нейтральный (резервный) ресурс, который будет использоваться, когда языковые и региональные параметры не заданы явно. В файле Messages.resx может присутствовать запись, подобная следующей:

<data name="ThankYouLabel"><value>Thank you very much!</value></data>

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

Показ: