Embedded Code Blocks in ASP.NET Web Pages

The default model for adding code to an ASP.NET Web page is to either create a code-behind class file (a code-behind page) or to write the page's code in a script block with the attribute runat="server" (a single-file page). The code you write typically interacts with controls on the page. For example, you can display information on the page from code by setting the Text (or other) properties of controls.

Another possibility is to embed code directly into the page using an embedded code block.

Embedded Code Blocks

An embedded code block is server code that executes during the page's render phase. The code in the block can execute programming statements and call functions in the current page class.

The following code example shows an ASP.NET page with an embedded code block that displays the results of a loop.

<%@ Page Language="VB" %>
<html>
<body>
    <form id="form1" runat="server">
    <% For i As Integer = 0 To 5 %>       <% Response.Write("<br>" & i.ToString())%>    <% Next%>
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<body>
    <form id="form1" runat="server">
    <% for(int i = 0; i < 6; i++) %>       <% { Response.Write("<br>" + i.ToString()); }%>
    </form>
</body>
</html>

The following code example shows an embedded code block that displays the value of a public GetTime() function inside a span element. In embedded code blocks, the syntax <% = expression %> is used to resolve an expression and return its value into the block.

<%@ Page Language="VB" %>
<script runat=server>
Protected Function GetTime() As String
    Return DateTime.Now.ToString("t")
End Function
</script>
<html>
<body>
    <form id="form1" runat="server">
       Current server time is <% =GetTime()%>.
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<script runat=server>
protected String GetTime()
{
    return DateTime.Now.ToString("t");
}
</script>
<html>
<body>
    <form id="form1" runat="server">
       Current server time is <% =GetTime()%>.
    </form>
</body>
</html>

Embedded code blocks must be written in the page's default language. For example, if the page's @ Page directive contains the attribute language="VB", the page will use the Visual Basic compiler to compile code in any script block marked with runat="server" and any in-line code in <% %> delimiters.

Uses for Embedded Code Blocks

Embedded code blocks are supported in ASP.NET Web pages primarily to preserve backward compatibility with older ASP technology. In general, using embedded code blocks for complex programming logic is not a best practice, because when the code is mixed on the page with markup, it can be difficult to debug and maintain. In addition, because the code is executed only during the page's render phase, you have substantially less flexibility than with code-behind or script-block code in scoping your code to the appropriate stage of page processing.

Some uses for embedded code blocks include:

  • Setting the value of a control or markup element to a value returned by a function, as illustrated in the preceding example.

  • Embedding a calculation directly into the markup or control property.

See Also

Concepts

ASP.NET Web Page Code Model

ASP.NET Web Page Syntax Overview