2010-11-21 52 views
22

Entiendo lo que estos significan en el marcado de las páginas aspx ... pero no sé la potencia completa para la que se pueden usar o incluso el nombre para denotar estos directivas especiales.<% %> en ASP.NET (bloques de código incrustado)

Ejemplo:

puedo poner sentencias condicionales como ifs o interruptores

he visto y utilizado para enlazar datos de un conjunto de datos por ejemplo

Cualquier entrada es muy apreciada

+4

Si estás haciendo Asp.net formularios web, me evite usarla demasiado. Es mejor presentación y más fácil de depurar para poner ese código en el código detrás en lugar de la porción html. – Lareau

+0

@ Lareau estuvo de acuerdo. Solo estaba interesado en la flexibilidad de ellos. –

Respuesta

25

Estas son las etiquetas bloque de código.

Y sí se puede envolver código serverside en estas etiquetas (ejemplos en C#)

<% if (x = y) { 
    } else { 
    } 
%> 

O

<% if (x = y) {%> 
    Write this HTML 
<% } else {%> 
    Write this html 
<% }%> 

También hay

Este <%=SomeVar %> Cuál cabo pondrá somevar a HTML

+0

muy informativo y gracias por los ejemplos! –

-1

Sí, esos símbolos indican al servidor analizando la página que el código dentro de esas etiquetas debe interpretarse como código y no como HTML.

Por lo tanto, para responder a su otra pregunta, puede usar condicionales y la mayoría de las demás características de programación admitidas por el servidor.

Salida una guía rápida de ASP: http://www.w3schools.com/asp/default.asp

8

La documentación de MSDN los llama embedded code blocks. Puede colocar prácticamente cualquier código que coloque en archivos de código subyacente y el servidor los ejecutará antes de enviar sus páginas a los navegadores.

Directive es el nombre dado a un tipo particular de bloque de código, el más comúnmente visto en la parte superior de las páginas ASP.NET para proporcionar al compilador información sobre sus páginas ASP.NET. Están delimitados por <%@ y %>.

El idioma de los bloques de código es el mismo que el especificado en el bloque de directivas. Un ejemplo rápido:

<%@ Page Language="C#" %> 
<!DOCTYPE html> 
<html> 
    <body> 
    <p><% string hello = "Hello world!"; Response.Write(hello); %></p> 
    <ol> 
    <% for (int i = 1; i <= 5; ++i) { %> 
     <li><% Response.Write("Item #" + i); %></li> 
    <% } %> 
    </ol> 
    </body> 
</html> 
+0

gracias por sus respuestas. Eso ayudará con investigaciones adicionales sobre diferentes formas de bloques de código incrustados. –

0

Cuando el servidor recibe una solicitud de una página ASPX, genera una clase en memoria que hereda de Page (o lo que sea base de clase que ha especificado). La clase heredada traduce el marcado "normal" en llamadas estáticas Response.Write(), <%...%> en código equivalente, y <%= someExpression %> en Response.Write(someExpression). Para el bloque de código anterior, se debe aceptar cualquier C# (o VB) válido; para este último, el código incrustado debe ser una expresión única (algo que podría asignarse a una variable.

39

Here (or here - in case it moves again) es una publicación que encontré y escondí hace un tiempo que enumeraba todas las diferentes etiquetas en línea del lado del servidor con ejemplos.Hay siete:

  1. <%...%> carreras código normal
  2. <%=...%> es equivalente a Response.Write()
  3. <%#...%> se utiliza para expresiones de enlace de datos
  4. <%$...%> devuelve el valor de una expresión, y se pueden utilizar en los parámetros (nota: las expresiones no son código - consulte here)
  5. <%@...%> es para las directivas de página, generalmente en la parte superior del archivo ASPX
  6. <%--...--%> es para comentarios
  7. <%:...%> es lo mismo que <%= excepto que HTML codifica el valor
+6

Ese enlace parece muerto pero el [artículo de MSDN] (https://support.microsoft.com/en-us/kb/976112) de [esta respuesta] (http://stackoverflow.com/a/3812341/761771) es bastante bueno. – Nate

+1

lo que es desafortunado es que el artículo de MSDN enumera '<%@ ... %>' dos veces en la introducción, pero no tiene ninguna información en '<%: ... %>' etiqueta de servidor, que es lo que estaba buscando ... Aquí hay otro enlace para verificar : https://weblogs.asp.net/ahmedmoosa/embedded-code-and-inline-server-tags – Adam

Cuestiones relacionadas