ASP.NET expresiones insertadas en .NET Framework

Este artículo contiene una introducción a las siguientes ASP.NET expresiones insertadas:

  • <% ... %>
  • <%= ... %>
  • <%@ ... %>
  • <%# ... %>
  • <%$ ... %>
  • <%-- ... --%>

Versión original del producto: .NET Framework
Número de KB original: 976112

<% ... %> de bloques de código incrustados

El bloque de código incrustado se usa para conservar la compatibilidad con versiones anteriores con ASP clásica. El código del bloque puede ejecutar instrucciones de programación y llamar a funciones en la clase de página actual durante la fase de representación de páginas.

En el ejemplo siguiente se muestra una página de ASP.NET que tiene código .NET de Microsoft Visual Basic de ejemplo en un bloque de código incrustado para mostrar los resultados de un bucle:

<%@ Page Language="VB" %>
<html>
<body>
    <form id="form1" runat="server">
        <% For i As Integer = 16 To 24 Step 2%>
            <div style="font-size: <% Response.Write(i)%>">
                Hello World<br />
            </div>
        <% Next%>
    </form>
</body>
</html>

Dado que un bloque de código incrustado siempre se mezcla con el origen del lenguaje de marcado de hipertexto (HTML), es difícil para los desarrolladores leerlos y mantenerlos.

Para obtener más información sobre los bloques de código incrustados en ASP.NET páginas web, visite Bloques de código incrustado en ASP.NET Web Forms Pages.

<%= ... %> que muestra la expresión

La <%= ... %> expresión que muestra es un equivalente del bloque de código incrustado que contiene solo la Response.Write(...) instrucción . Es la manera más sencilla de mostrar información como una sola cadena, una variable int o una constante.

Por ejemplo, el código de ejemplo siguiente muestra la hora actual:

<%@ Page Language="VB" %>
<html>
    <body>
        <form id="form1" runat="server">
            <%=DateTime.Now.ToString() %>
        </form>
    </body>
</html>

Recuerde que la expresión que se muestra no se puede usar en los atributos de los controles de servidor. Se debe a que .NET Framework compila directamente toda la expresión en lugar de mostrar el contenido como el valor del atributo.

Para obtener más información sobre cómo mostrar información de ASP.NET, visite Mostrar desde ASP.NET.

<%@ ... %> expresión de directiva

La expresión de directiva es la sintaxis que especifica la configuración que usan la página y los compiladores de controles de usuario al procesar ASP.NET páginas de formulario web (.aspx) y archivos de control de usuario (.ascx).

El marco de trabajo de página ASP.NET admite las siguientes directivas:

Directiva Descripción
@ Page Define los atributos específicos de página que usan el analizador de páginas y el compilador de ASP.NET. Solo se puede incluir en .aspx archivos.
Este nombre de directiva solo se puede usar en ASP.NET páginas de formulario web.
@ Control Define los atributos específicos del control que usan el analizador de páginas ASP.NET y el compilador. Solo se puede incluir en archivos .ascx (controles de usuario).
El nombre de la directiva solo se puede usar en archivos de control de usuario.
@ Import Importa explícitamente un espacio de nombres en una página o en un control de usuario.
@ Implements Declarativamente indica que una página o un control de usuario implementa una interfaz de .NET Framework especificada.
@ Register Asocia alias con espacios de nombres y con nombres de clase. Lo que permite que los controles de usuario y los controles de servidor personalizados se representen cuando se incluyan en una página solicitada o en un control de usuario.
@ Assembly Vincula un ensamblado a la página actual durante la compilación. Hace que todas las clases e interfaces del ensamblado estén disponibles para su uso en la página.
@ Master Identifica una página maestra ASP.NET.
@ WebHandler Identifica una página IHttpHandler ASP.NET.
@ PreviousPageType Proporciona una manera de obtener una escritura segura en la página anterior a la que se accede a través de la propiedad PreviousPage.
@ MasterType Asigna un nombre de clase a la propiedad Master de una página de ASP.NET. Proporciona una manera de crear una referencia fuertemente tipada a la página maestra de ASP.NET.
@ OutputCache Controla mediante declaración las directivas de almacenamiento en caché de salida de una página o de un control de usuario.
@ Reference Vincula mediante declaración una página o un control de usuario a la página actual o al control de usuario.

Para obtener más información sobre la sintaxis de directiva, visite Sintaxis de directiva de plantilla de texto.

<%# ... %> expresión de enlace de datos

La expresión de enlace de datos crea un enlace entre una propiedad de control de servidor y un origen de datos cuando se llama al método DataBind del control de este control de servidor en la página.

En el ejemplo siguiente se muestra cómo usar la expresión de enlace de datos para enlazar la cadena de una función a la propiedad Text de una etiqueta:

<%@ Page Language="VB" %>
<script runat="server">
    Protected Function SayHello() As String
        Return "Hello World"
    End Function

    Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
        lblHello.DataBind()
    End Sub
</script>
<html>
    <body>
        <form id="form1" runat="server">
            <asp:Label ID="lblHello" runat="server" Text="<%# SayHello%>"></asp:Label>
        </form>
    </body>
</html>

Para obtener más información sobre la sintaxis de expresiones de enlace de datos, visite Sintaxis de expresiones de enlace de datos.

<%$ ... %> generador de expresiones

El generador de expresiones se usa para establecer valores de propiedades de control en función de la información contenida en los archivos de recursos o configuración de una aplicación. El ejemplo siguiente es la sintaxis básica del generador de expresiones:
<%$ Expression Prefix: Expression Value %>

El signo de dólar ($) indica a ASP.NET que la siguiente expresión es un generador de expresiones. El prefijo de expresión define el tipo de expresión, como AppSettings, ConnectionStringso Resources. Además, puede crear y definir su propio generador de expresiones. Valor de expresión que sigue a los dos puntos (:) es lo que ASP.NET usará realmente como valor de una propiedad determinada.

En la demostración siguiente se muestra cómo usar el generador de expresiones para obtener los derechos de autor de un sitio web del AppSettings nodo del archivo Web.config y cómo establecer la información de copyright como el valor de la propiedad Text del literal.

Nodo AppSettings en Web.config archivo:

<appSettings>
    <add key="copyright" value="(c) Copyright 2009 WebSiteName.com"/>
</appSettings>

Generador de expresiones en la página ASP.NET formulario web:

<div id="footer">
    <asp:Literal ID="Literal1" runat="server" Text="<%$ AppSettings: copyright %>"></asp:Literal>
</div>

Para obtener más información sobre las expresiones de ASP.NET, visite Introducción a las expresiones de ASP.NET.

<%-- ... -- %> bloque de comentarios del lado servidor

El bloque de comentarios del lado servidor permite a los desarrolladores insertar comentarios de código en cualquier ubicación del origen HTML de ASP.NET páginas de formulario web (excepto dentro de <script> bloques de código). Cualquier contenido entre las etiquetas de apertura y cierre del bloque de comentarios del lado servidor no se procesará en el servidor ni se representará en la página resultante.

En el ejemplo de código siguiente se muestra cómo usar el bloque de comentarios del lado servidor en una página de ASP.NET:

<%@ Page Language="VB" %>
<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim strName As String
        strName = Session("userName")
        lblUserName.Text = strName
    End Sub
</script>
<html>
    <body>
        <form id="form1" runat="server">
            <%-- Label for UserName --%>
            <asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
        </form>
    </body>
</html>

Para obtener más información sobre los comentarios del lado servidor, visite Comentarios del lado servidor.