What is the difference between <% %>
and <%= %>
in ASP.NET MVC? And when to use which?
<%= %> writes to the output stream (usually html) while <% %> is for executing arbitrary script code.
Say you have a method on your page, called "SayHello":
protected string SayHello()
{
return "Hello!";
}
And on your page, you have these statements:
first: <%= SayHello() %>
second: <% SayHello() %>
Your output will be:
first: Hello!
second:
when you use <%= %>, what you put in there is inserted into the html at that position. If you use <% %>, you're just inserting some code into your page.
See also this question. MVC hasn't changed how these bee-stings work, just how often they're used.
Basically:
<%
- execute code<%@
- page directive<%$
- resource access<%=
- explicit output to page<%#
- data binding<%--
- server side comment blockAlso new in ASP.Net 4:
<%:
- writes out to the page, but with HTML encoded<%= echos the statement out.
<% just runs it.