2010-04-13 21 views
7

Duplicar posibles:
ASP.NET “special” tags<%# %> vs <%= %>

¿Cuál es la diferencia entre <%# ... %>, <%= ... %> y <%$ ... %>?

No pude encontrar nada información sobre esto. Es imposible encontrar "<% =" utilizando un motor de búsqueda.

¿Estas etiquetas tienen un nombre?

+1

En cuanto a la terminología, creo que se llaman expresiones en línea. – AaronLS

Respuesta

8

<%= ... %> es generalmente equivalente a Response.Write (...) no se puede usar en un atributo de control que es runat = "server"

<%: ... %> (a partir de .NET v4.0) es una versión html codificada de <%= %> (como se menciona @Eric)

<%# ... %> se utiliza en el contexto de enlace de datos para Bind, Eval o de salida (como se menciona @Ray)

<%$ ... %> se utiliza en el contexto de un atributo de control con runat = "server" (google "expression builder" también tiene un propósito general 'Code' expression builder. Se evalúa cuando el control requiere el atributo/parámetro

5

<% #%> intentará enlazar datos con una fuente de datos, utilizando la función Bind(). Esto lo convierte en una función bidireccional (lectura y escritura).

<% =%> harán que los datos sean de solo lectura.

+2

También <%= %> imprime lo que esté entre los bloques, donde como <% %> simplemente ejecuta esas declaraciones – Jimmy

+2

Y ahora también tenemos <%: %> para la salida codificada en html también. –

1

<% #%> can SÓLO se utiliza en el contexto de enlace de datos.

<% =%> espera un valor de cadena que luego incluirá en la secuencia de salida. Entonces, una variable de cadena o un método que devuelve una cadena. Cualquier otra cosa provocará un error.

4

<% #%> se evalúa durante el enlace de datos. No requiere necesariamente Eval() o Bind() y Matthew sugirió: lo uso con frecuencia para mostrar texto sin formato en un control de repetidor.

<% =%> se evalúa a medida que se rende la página. Es equivalente a llamar a Response.Write().

+0

+1 Estaba a punto de pedir otra respuesta sobre "cuándo" se evalúa cada una. – AaronLS

0

me pareció una buena información que aclara la terminología para sus futuras búsquedas de Google:

http://authors.aspalliance.com/aspxtreme/aspnet/syntax/aspnetpagesyntax.aspx

Código Render bloques:

<% inline code %> 

un acceso directo para HttpResponse.Write:

<%=inline expression %> 

Datos expresiones de enlace:

<%# databinding expression %> 

En una propiedad:

<tagprefix:tagname property = "<%# databinding expression %>" runat="server" /> 

-lado del servidor comenta, de tal manera que no aparecen en la página de origen del cliente:

<%-- commented out code or content --%>