Información general sobre expresiones ASP.NET

Actualización: noviembre 2007

Las expresiones de ASP.NET son una manera declarativa de establecer propiedades de control basadas en información que se evalúa en tiempo de ejecución. Por ejemplo, puede utilizar expresiones para establecer una propiedad para valores que se basen en cadenas de conexión, valores de configuración de la aplicación y otros valores contenidos dentro de los archivos de recursos y configuración de una aplicación. Las expresiones se evalúan en tiempo de ejecución cuando se analizan los elementos declarativos de la página y el valor que representa la expresión se sustituye por la sintaxis de la expresión. (Dado que las expresiones se evalúan durante el análisis, no puede crear expresiones en código dinámicamente.)

Un uso común de las expresiones se produce en los controles de orígenes de datos para hacer referencia a una cadena de conexión. En lugar de incluir la cadena de conexión directamente en el control de origen de datos como un valor de propiedad, se puede utilizar una expresión que especifique dónde se encuentra la cadena de conexión dentro del archivo de configuración. En tiempo de ejecución, la expresión se resuelve leyendo la cadena de conexión en el archivo de configuración. Es posible utilizar las expresiones para cualquier valor de propiedad que se desee resolver en tiempo de ejecución en lugar de establecerlo como valor estático.

El uso de expresiones ayuda a mantener una aplicación según se indica a continuación:

  • Puede reducir el código en su aplicación haciendo referencia a información dinámica mediante declaración. Esto evita tener que escribir código para establecer los valores de la propiedad en tiempo de ejecución.

  • Se puede reutilizar la misma configuración en varios controles. Por ejemplo, si se almacena una cadena de conexión en el archivo Web.config y, a continuación, se utilizan expresiones para hacer referencia a ella en determinadas páginas, es posible cambiar la cadena de conexión en una ubicación central en lugar de en cada control que se utilice.

  • Se pueden almacenar los datos importantes como las credenciales de una cadena de conexión (u otros datos de la aplicación) en el archivo Web.config y, a continuación, cifrarlos.

  • Si trabaja con un diseñador visual como Visual Studio, puede aprovecharse de las herramientas del diseñador que pueden ayudarle a generar expresiones.

Las expresiones también son extensibles, con el fin de que se pueda definir una sintaxis de expresión propia. Puede crear a continuación expresiones que llaman al controlador de expresiones personalizado para devolver un valor mediante su lógica personalizada.

Sintaxis básica

La sintaxis básica de una expresión ASP.NET es la siguiente:

<%$ expressionPrefix: expressionValue %>

El signo de dólar ($) indica a ASP.NET que sigue una expresión. El prefijo de expresión define el tipo de la misma, como AppSettings, ConnectionStrings o Resources. Después de los dos puntos (:) se encuentra el valor de expresión real que ASP.NET resolverá.

La sintaxis de expresión no se enlaza a cualquier lenguaje .NET concreto. Es posible utilizar la misma sintaxis de expresión tanto si utiliza Visual Basic, C# como cualquier otro lenguaje de programación en las páginas ASP.NET.

Cadenas de conexión

Un uso común de las expresiones consiste en establecer la propiedad de la cadena de conexión de un control, por ejemplo el control SqlDataSource, en función del valor de una cadena de conexión almacenado en el archivo Web.config. Por ejemplo, sería posible disponer del siguiente control SqlDataSource con un atributo de cadena de conexión:

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

El código resaltado muestra una expresión que aparece entre comillas y denota el valor del atributo. La expresión hace referencia a una cadena de conexión denominada "NorthwindConnectionString1" que se define en el elemento connectionStrings del archivo Web.config. El elemento connectionStrings podría ser como el siguiente:

<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <!-- additional settings -->
</configuration>
Nota:

Para mayor seguridad, se recomienda que cifre la sección del archivo de configuración que contiene las cadenas de conexión. Para obtener información detallada, vea Cifrar información de configuración mediante una configuración protegida. En el ejemplo anterior, la sección configuration del archivo de configuración se muestra sin cifrar para mayor claridad.

Cada cadena de conexión recibe un nombre, que puede utilizar en una expresión para hacer referencia a ella dentro de sus páginas ASP.NET.

Configuración de aplicaciones

Además de usar las expresiones para las cadenas de conexión, éstas se pueden utilizar para hacer referencia a la configuración de aplicaciones que aparece definida en un archivo de configuración accesible para el sitio Web. Por ejemplo, puede darse el caso de contar con cadenas que se usen con frecuencia, como el mensaje del copyright de un sitio determinado, almacenadas en la sección appSettings del archivo Web.config, que presentará un aspecto similar a:

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

Dentro de las páginas ASP.NET, se puede hacer referencia al valor pertinente utilizando una expresión similar a la siguiente:

<%$ AppSettings: copyright %>

Esto haría posible mantener los elementos que se citen con frecuencia dentro del archivo de configuración en lugar de tener que cambiar el mismo texto en cada página.

Mostrar contenido estático mediante expresiones

Si se desea utilizar una expresión como valor estático en una página o control, es posible utilizar una expresión como parte de un control de servidor ASP.NET. Una estrategia típica consiste en agregar un control Literal y establecer su propiedad Text en una expresión. Por ejemplo, para colocar un aviso de copyright en la parte inferior de cada página, se podría utilizar lo siguiente:

<p align="center">

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

</p>

Archivos de recursos

Además de mostrar los valores contenidos en un archivo de configuración, se pueden mostrar los valores almacenados en los archivos de recursos (.resx o .resource). Normalmente, los archivos de recursos se usan con el fin de almacenar información para un idioma concreto o una combinación de idioma y referencias culturales específica. Si utiliza archivos de recursos y expresiones, puede crear una página Web que muestre texto en diferentes idiomas dependiendo de los valores que se determinen en tiempo de ejecución, como los valores de idioma y referencia cultural que establece el explorador o el idioma explícito que seleccione el usuario.

Por ejemplo, al localizar automáticamente el contenido, puede establecer la propiedad Text de un control de servidor utilizando la sintaxis de expresión, como en este ejemplo:

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

En la carpeta App_GlobalResources, podría tener archivos de recursos llamados Messages.resx, Messages.es.resx, Message.de.resx, etc., un archivo de recursos de mensajes para cada idioma con el que se vaya a trabajar. El archivo Messages.resx representa el recurso neutral (reserva) que se utiliza si no se especifica ninguna referencia cultural. En el archivo Messages.resx, podría tener una entrada así:

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

Tendría entradas similares en otros archivos de recursos, con las cadenas traducidas apropiadamente para el lenguaje representado por ese archivo de recursos. Para obtener más información sobre cómo utilizar expresiones para los recursos y la localización, vea Información general sobre los recursos de las páginas Web ASP.NET.

Vea también

Conceptos

Información general sobre sintaxis de páginas web ASP.NET

Otros recursos

Sintaxis de los archivos de configuración de ASP.NET