Skip to main content

ASP style

ASP-style templates use <% ... %> delimiters and allow you to write full JavaScript code inside the template. This gives you the most control over the output

Select render mode ASP style to use only this style, or Comment, Curly, ASP to combine it with other styles.

Output expression

Use <%= expression %> to evaluate an expression and output the result:

<p><%= $request.subject %></p>

Code blocks

Use <% ... %> to write JavaScript code that does not produce output directly, for example for conditionals and loops (explained below):

<% if ($request.notes && $request.notes.length > 0) { %>
<p>This request has <%= $request.notes.length %> notes.</p>
<% } %>

Control flow

Since the code blocks are full JavaScript, you can use any control flow structure:

Conditionals

<% if ($request.status === "completed") { %>
<p>This request is completed.</p>
<% } else { %>
<p>This request is still in progress.</p>
<% } %>

For loops

<table>
<% for (let note of $request.notes) { %>
<tr>
<td><%= note.person.name %></td>
<td><%= note.text %></td>
</tr>
<% } %>
</table>

While loops

<% let i = 0; %>
<% while (i < items.length) { %>
<p><%= items[i].name %></p>
<% i++; } %>

Template literals

You can use JavaScript template literals with ${variable} syntax inside code blocks:

<% let message = `Hello ${$request.requested_by.name}`; %>
<p><%= message %></p>

Available functions

Inside ASP-style templates, you can call any function available to the script. This includes formatting functions like formatDateTime and formatNumber:

<table class="notes">
<% for (let item of $request.notes) { %>
<tr>
<td><%= item.person.name %></td>
<td><%= formatDateTime(item.created_at, 'DD/MM/YY HH:mm z', 'Paris') %></td>
<td><%= formatNumber(item.price, '$0,0.00', 'de') %></td>
</tr>
<% } %>
</table>