<%$, <%@, <%=, <%# ... what's the deal?
I've programmed in both classic ASP and ASP.NET, and I see different tags inside of the markup for server side code.
I've recently come across a good blog on MSDN that goes over the difference between:
-
<%=
(percentage together with equals sign) and -
<%#
(percent sign and hash/pound/octothorpe)
(<%#
is evaluated only at databind, and <%=
is evaluated at render), but I also see:
-
<%$
(percent and dollar sign) and -
<%@
(percent sign and at symbol).
I believe <%@
loads things like assemblies and perhaps <%$
loads things from config files? I'm not too sure.
I was just wondering if anyone could clarify all of this for me and possibly explain why it's important to create so many different tags that seemingly have a similar purpose?
-
<% %>
- is for inline code (especially logic flow) -
<%$ %>
- is for evaluating expressions (like resource variables) -
<%@ %>
- is for Page directives, registering assemblies, importing namespaces, etc. -
<%= %>
- is short-hand forResponse.Write
(discussed here) -
<%# %>
- is used for data binding expressions. -
<%: %>
- is short-hand for Response.Write(Server.HTMLEncode()) ASP.net 4.0+ -
<%#: %>
- is used for data binding expressions and is automatically HTMLEncoded. -
<%-- --%>
- is for server-side comments
You've covered 2 of them (<%# is evaluated only at databind, and <%= is evaluated at render), and the answer for "<%@
" is that it's compiler directives (ie., stuff like what you'd put on a compiler's command line).
I don't know about "<%$
".