A view engine that is used to render a Web Forms page to the response.
Pros:
- ubiquitous since it ships with ASP.NET MVC
- familiar experience for ASP.NET developers
- IntelliSense
- can choose any language with a CodeDom provider (e.g. C#, VB.NET, F#, Boo, Nemerle)
- on-demand compilation or precompiled views
Cons:
- usage is confused by existence of "classic ASP.NET" patterns which no longer apply in MVC (e.g. ViewState PostBack)
- can contribute to anti-pattern of "tag soup"
- code-block syntax and strong-typing can get in the way
- IntelliSense enforces style not always appropriate for inline code blocks
- can be noisy when designing simple templates
Example:
<%@ Control Inherits="System.Web.Mvc.ViewPage<IEnumerable<Product>>" %>
<% if(model.Any()) { %>
<ul>
<% foreach(var p in model){%>
<li><%=p.Name%></li>
<%}%>
</ul>
<%}else{%>
<p>No products available</p>
<%}%>