You can certainly use:
<%= FirstName %>
Where FirstName is a property of the page. It doesn't necessarily have to be a property in the class, you can access pretty much anything from that line.
Update: As DrJokepu pointed out, if the data you are displaying is coming from user input, then it opens a XSS vulnerability. As was pointed out you use HtmlEncode to avoid that, in that case a more short syntax would be:
<%= Server.HtmlEncode(FirstName) %>
And if you have a base page, you can get define a method and get away with:
<%= HtmlEncode(FirstName) %>
If you go with asp.net labels, do EnableViewState = false where appropiate, so you avoid sending/receiving unnecessary viewstate.
For formatting use ids/css classes, and have the styles in a css stylesheet. The css can be cached by the browser regardless of whether the content is dynamic.
For lists of info, you can use ListView or Repeaters and still control the specific html that will be sent over the wire.