15

What is the difference between <% %> and <%= %> in ASP.NET MVC? And when to use which?

Graviton
  • 79,554
  • 141
  • 413
  • 589

4 Answers4

36

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 block

Also new in ASP.Net 4:

  • <%: - writes out to the page, but with HTML encoded
Community
  • 1
  • 1
Keith
  • 142,371
  • 70
  • 289
  • 413
10

<%= %> writes to the output stream (usually html) while <% %> is for executing arbitrary script code.

Tahir Akhtar
  • 11,187
  • 7
  • 41
  • 68
8

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.

Erik van Brakel
  • 22,584
  • 2
  • 49
  • 66
3

<%= echos the statement out.

<% just runs it.

Rich Bradshaw
  • 69,588
  • 44
  • 174
  • 240