<% $, <% @, <% =, <% # ... qual é o problema?

211

Programei no ASP clássico e no ASP.NET e vejo marcas diferentes dentro da marcação para código do lado do servidor.

Recentemente, deparei com um bom blog no MSDN que aborda a diferença entre:

  • <%= (porcentagem junto com o sinal de igual) e
  • <%# (sinal de porcentagem e hash / libra / octóforo)

( <%#é avaliado apenas no databind e <%=no render), mas também vejo:

  • <%$ (porcentagem e cifrão) e
  • <%@ (sinal de porcentagem e no símbolo).

Eu acredito que <%@carrega coisas como assemblies e talvez <%$carrega coisas de arquivos de configuração? Eu não tenho tanta certeza.

Eu estava pensando se alguém poderia esclarecer tudo isso para mim e possivelmente explicar por que é importante criar tantas tags diferentes que aparentemente têm um objetivo semelhante?

Aaron
fonte
72
Estou feliz que você perguntar, porque é muito difícil para o Google;)
Nicolas Dorier
8
Impossível para o Google!
Jdbosley
<%#é frequentemente usado com eval, mas não é necessário: você pode usá-lo para executar qualquer código do servidor, desde que seja executado Page.DataBind()na página que contém ou em sua página mestre. Parece que esta é sua única opção, caso você queira "injetar" o código do lado do servidor em atributos de controles do lado do servidor, como <asp:TextBox, <asp:LinkButtonou mesmo a <input runat="server">.
Gilad Barner
1
@jdbosley eu pesquisei no Google "<%=" "<%:""<%@" "<%#"e me enviou aqui.
Rudey
2
@RuudLenders, sorte para você e bom trabalho no Google. Em 2014, a pesquisa dessas tags não retornou resultados de boa qualidade.
Jdbosley 06/06

Respostas:

296
Jose Basilio
fonte
Eu acho que é porque é uma resposta aceita, mas tentar editar o link não funcionou. aqui está o link que eu tentei colocar em sobre a avaliação da expressão "<% $": msdn.microsoft.com/en-us/library/d5bd1tad.aspx
John MacIntyre
6
Existe um nome para tudo isso? Como são chamados esses grupos?
Vippy
9
@ VIP Eles são chamados de picadas de abelha .
Ian Boyd
1
@Lankymart O uso mais antigo que posso encontrar é setembro de 2008 #
Ian Boyd
1
O @Vippy MS os chama de blocos de código incorporados "picadas de abelha" é um termo não oficial.
shiggity
5

Você cobriu 2 deles (<% # é avaliado apenas no databind e <% = é avaliado no render), e a resposta para " <%@" é que são diretrizes do compilador (por exemplo, coisas como o que você colocaria) linha de comando de um compilador).

Eu não sei sobre " <%$".

Michael Burr
fonte