<% $, <% @, <% =, <% #… O co chodzi?

211

Programowałem zarówno w klasycznej ASP, jak i ASP.NET i widzę różne znaczniki wewnątrz kodu dla kodu po stronie serwera.

Ostatnio spotkałem dobrego bloga na MSDN, który omawia różnicę między:

  • <%= (procent razem ze znakiem równości) i
  • <%# (znak procentu i skrót / funt / oktotorpe)

( <%#jest oceniany tylko w powiązaniu danych i <%=jest oceniany podczas renderowania), ale widzę też:

  • <%$ (znak procentu i dolara) i
  • <%@ (znak procentu i symbol).

Wierzę, że <%@ładuje rzeczy takie jak zespoły, a może <%$ładuje rzeczy z plików konfiguracyjnych? Nie jestem zbyt pewny.

Zastanawiałem się tylko, czy ktoś mógłby wyjaśnić mi to wszystko i ewentualnie wyjaśnić, dlaczego ważne jest tworzenie tak wielu różnych tagów, które pozornie mają podobny cel?

Aaron
źródło
72
Cieszę się, że pytasz, bo bardzo trudno google;)
Nicolas Dorier
8
Niemożliwe dla Google!
jdbosley
<%#jest często używany z eval, ale nie musi: możesz go użyć do uruchomienia dowolnego kodu po stronie serwera, pod warunkiem, że uruchomisz go Page.DataBind()na stronie zawierającej lub na stronie wzorcowej. Wygląda na to, że jest to twoja jedyna opcja na wypadek, gdybyś chciał „wstrzyknąć” kod po stronie serwera do atrybutów kontrolek po stronie serwera, takich jak <asp:TextBox, <asp:LinkButtona nawet <input runat="server">.
Gilad Barner
1
@jdbosley I googlowałem "<%=" "<%:""<%@" "<%#"i wysłało mnie tutaj.
Rudey,
2
@RuudLenders, szczęście dla ciebie i dobra robota Google. W 2014 r. Wyszukiwanie tych tagów nie zwróciło wyników dobrej jakości.
jdbosley

Odpowiedzi:

296
Jose Basilio
źródło
Chyba dlatego, że jest to zaakceptowana odpowiedź, ale próba edycji / w link nie działa. oto link, który próbowałem wprowadzić na temat oceny wyrażenia „<% $”: msdn.microsoft.com/en-us/library/d5bd1tad.aspx
John MacIntyre
6
Czy jest na to nazwa? Jak nazywają się one jako grupa?
Vippy
9
@Vippy Nazywa się je użądleniami pszczół .
Ian Boyd
1
@Lankymart Najwcześniejsze użycie, jakie mogę znaleźć, to wrzesień 2008 r.
Ian Boyd
1
@Vippy MS nazywa je Bloki kodu osadzonego „Pszczoły pszczół” to nieoficjalne określenie.
shiggity,
5

Omówiłeś 2 z nich (<% # jest oceniane tylko w powiązaniu z danymi, a <% = jest oceniane w czasie renderowania), a odpowiedź na „ <%@” jest taka, że ​​są to dyrektywy kompilatora (tj. Rzeczy takie jak to, co nałożysz wiersz poleceń kompilatora).

Nie wiem o „ <%$”.

Michael Burr
źródło