.NET中用来绑定Configuration和Resource的表达式

来源:百度文库 编辑:神马文学网 时间:2024/05/02 02:35:14
ASP.NET 表达式概述

ASP.NET 表达式是基于运行时计算的信息设置控件属性的一种声明性方式。例如,可以使用表达式将属性设置为基于连接字符串的值、应用程序设置以及应用程序的配置和资源文件中所包含的其他值。当分析页的声明性元素时,在运行时计算表达式,并且表达式所表示的值被表达式语法替换。(因为在分析时计算表达式,所以不能在代码中动态创建表达式。)

表达式的一个常见用途是在数据源控件中引用连接字符串。您可以使用表达式来指定连接字符串在配置文件中的位置,而不用将连接字符串作为属性值直接包括在数据源控件中。运行时,将通过从配置文件读取连接字符串来解析表达式。对于需要在运行时解析而不是设置为静态值的任何属性设置,都可以使用表达式。

使用表达式有助于您通过以下方式维护应用程序:

  • 以声明的方式引用动态信息可以减少应用程序中的代码。这将避免编写在运行时设置属性值的代码。

  • 可以在多个控件中重用相同的设置。例如,如果您将某个连接字符串存储在 Web.config 文件中,然后使用表达式在页中引用该连接字符串,那么,您可以在一个中心位置更改该连接字符串,而不必在每个使用该连接字符串的控件中进行更改。

  • 您可以将诸如连接字符串凭据的敏感数据(或其他应用程序数据)存储在 Web.config 文件中,然后对数据进行加密。

  • 在可视化设计器(如 Visual Studio)中工作时,可以利用设计器中的工具来帮助您生成表达式。

表达式也是可扩展的,因此您可以定义自己的表达式语法。您可以创建调用自定义表达式处理程序的表达式,以使用自定义逻辑返回值。

基本语法

ASP.NET 表达式的基本语法如下:

复制代码
<%$ expressionPrefix: expressionValue %>

美元符号 ($) 通知 ASP.NET 它的后面是一个表达式。表达式前缀定义了表达式的类型,如 AppSettingsConnectionStringsResources。冒号 (:) 后面的部分是 ASP.NET 将解析的实际表达式值。

表达式语法不受任何特定 .NET 语言的约束。无论您在 ASP.NET 页中使用 Visual Basic、C# 还是其他任何编程语言,都可以使用相同的表达式语法。

连接字符串

表达式的一个常见用途是根据存储在 Web.config 文件中的连接字符串的值设置控件(如 SqlDataSource 控件)的连接字符串属性。例如,您可能具有包含连接字符串属性的以下 SqlDataSource 控件:

复制代码

突出显示的代码演示一个表达式,该表达式包含在引号内,表示属性的值。该表达式引用在 Web.config 文件的 connectionStrings 元素中定义的连接字符串“NorthwindConnectionString1”。connectionStrings 元素可能如下所示:

复制代码
注意

建议您对包含连接字符串的配置文件节进行加密,以增加安全性。有关详细信息,请参见使用受保护的配置加密配置信息。在上面的示例中,为了清楚起见,配置文件的 configuration 节显示为未加密。

每个连接字符串都被赋予一个名称,您可以在 ASP.NET 页内在表达式中使用该名称来引用连接字符串。

应用程序设置

除了将表达式用于连接字符串之外,还可以使用表达式来引用在网站可访问的配置文件中定义的应用程序设置。例如,您可以将经常使用的字符串(如站点的版权信息)存储在 Web.config 文件的 appSettings 节中,可能如下所示:

复制代码

在 ASP.NET 页中,可以通过使用类似于以下形式的表达式来引用值:

复制代码
<%$ AppSettings: copyright %>

您可以使用这种方法在配置文件内维护经常引用的元素,而无需在每一页上更改相同的文本。

使用表达式显示静态内容

如果您希望将表达式用作页或控件中的静态值,可以将表达式用作 ASP.NET 服务器控件的一部分。典型的策略是添加一个 Literal 控件,并将其 Text 属性设置为一个表达式。例如,可以使用如下代码来替换每一页底部的版权声明:

资源文件

除了显示配置文件中包含的值以外,还可以显示存储在资源文件(.resx 或 .resource)中的值。通常使用资源文件来存储与特定语言或语言与区域性组合有关的信息。通过使用资源文件和表达式,可以创建一个根据运行时确定的值(如浏览器所报告的语言和区域性设置,或用户的显式语言选择)来以不同语言显示文本的网页。

例如,在自动本地化内容时,可以使用表达式语法来设置服务器控件的 Text 属性,如此示例所示:

复制代码

在 App_GlobalResources 文件夹中,可以有名为 Messages.resx、Messages.es.resx、Message.de.resx 等的资源文件,为每个想支持的语言提供一个 Messages 资源文件。Messages.resx 文件表示在没有显式设置区域性的情况下使用的非特定(后备)资源。在 Messages.resx 文件中,可能有如下项:

复制代码
Thank you very much!

在其他资源文件中可能有类似项,其中字符串被相应地翻译成该资源文件所表示的语言。有关将表达式用于资源和本地化的更多信息,请参见 ASP.NET 网页资源概述

请参见

概念

ASP.NET 网页语法概述

其他资源

ASP.NET 配置文件语法