<% $, <% @, <% =, <% # ... ¿cuál es el trato?

211

He programado tanto en ASP clásico como en ASP.NET, y veo diferentes etiquetas dentro del marcado para el código del lado del servidor.

Recientemente me encontré con un buen blog en MSDN que analiza la diferencia entre:

  • <%= (porcentaje junto con signo igual) y
  • <%# (signo de porcentaje y hash / libra / octothorpe)

( <%#se evalúa solo en databind y <%=se evalúa en render), pero también veo:

  • <%$ (porcentaje y signo de dólar) y
  • <%@ (signo de porcentaje y en el símbolo).

¿Creo que <%@carga cosas como ensamblajes y quizás <%$carga cosas de archivos de configuración? No estoy muy seguro

Me preguntaba si alguien podría aclarar todo esto para mí y posiblemente explicar por qué es importante crear tantas etiquetas diferentes que aparentemente tienen un propósito similar.

Aaron
fuente
72
Me alegra que lo preguntes, porque es muy difícil google;)
Nicolas Dorier
8
¡Imposible para Google!
jdbosley
<%#a menudo se usa con eval, pero no tiene que hacerlo: puede usarlo para ejecutar cualquier código del lado del servidor, siempre que se ejecute Page.DataBind()en la página que lo contiene o en su página maestra. Parece que esta es su única opción en caso de que desee "inyectar" el código del lado del servidor en los atributos de los controles del lado del servidor como <asp:TextBox, <asp:LinkButtono incluso a <input runat="server">.
Gilad Barner
1
@jdbosley Busqué en Google "<%=" "<%:""<%@" "<%#"y me envió aquí.
Rudey
2
@RuudLenders, suerte para ti y buen trabajo Google. En 2014, la búsqueda de esas etiquetas no arrojó resultados de buena calidad.
jdbosley

Respuestas:

296
Jose Basilio
fuente
Supongo que es porque es una respuesta aceptada, pero tratar de editar / w el enlace no funcionó. aquí está el enlace que intenté poner sobre la evaluación de la expresión "<% $": msdn.microsoft.com/en-us/library/d5bd1tad.aspx
John MacIntyre
66
¿Hay un nombre para todo esto? ¿Cómo se llaman estos como grupo?
Vippy
9
@Vippy Se llaman picaduras de abejas .
Ian Boyd
1
@Lankymart El uso más temprano que puedo encontrar es septiembre de 2008
Ian Boyd
1
@Vippy MS los llama bloques de código incrustados "picaduras de abeja" es un término no oficial.
shiggity
5

Usted ha cubierto 2 de ellos (<% # se evalúa solo en databind y <% = se evalúa en render), y la respuesta para " <%@" es que se trata de directivas del compilador (es decir, cosas como lo que pondría en la línea de comando de un compilador).

No sé sobre " <%$".

Michael Burr
fuente